基于PostgreSql 别名区分大小写的问题
PostgreSql是区分大小写的
如果别名的大小不一致就会提示错误:
SELECT * FROM ( SELECT cpi."product_item_id" "PRODUCT_ITEM_ID" FROM prd.up_product_item cpi ) a WHERE a.PRODUCT_ITEM_ID=1
一个很简单的子查询,但是会出错,虽然从语句上看大小写是一致的,但是内部查询中还是使用了小写。PostgreSql对于大写都需要加上双引号的,不然还是视作小写而定。
正确的写法如下
SELECT * FROM ( SELECT cpi."product_item_id" "PRODUCT_ITEM_ID" FROM prd.up_product_item cpi ) a WHERE a."PRODUCT_ITEM_ID"=1
补充:postgresql查询字段别名大写的要加双引号
PostgreSQL对表名、字段名都是区分大小写的。
在图形化界面可以正常新建。用SQL语句的时候需要加双引号,如果jdbc查询等处,记得使用转义符号。
PostgreSQL在SQL语句中对大小写是不敏感的。
select ID from t_user 和 select id from t_user
都会从t_user这个表中查询id这个字段。如果要查询大写字母的字段,同样要加上双引号:select “ID” from t_user
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。
相关推荐
-
PostgreSQL LIKE 大小写实例
PostgreSQL 数据库 函数upper("字符串"):转成大写字符串 WHERE UPPER("User_Name") LIKE upper(username) 此句查询"User_Name" 中值大小写不区分. SELECT "User_Id","User_Image","User_Name","User_Birthday","User_Sex&qu
-
Postgresql 数据库转义字符操作
产生问题 Postgresql数据库运行下面insert命令 insert into mapping_mac_brand(_id,mac,brand) values(777,'D86595','Toy\'s Myth Inc.') 提示下面的警告: Warning: nonstandard use of \' in a string literal HINT: Use '' to write quotes in strings or use the escape string syntax(E.
-
postgresql数据库使用说明_实现时间范围查询
按照日期查询通常有好几种方法: 按照日期范围查询有好几种方法,日期字段类型一般为: Timestamp without timezone 方法一: select * from user_info where create_date >= '2015-07-01' and create_date < '2015-08-15'; 方法二: select * from user_info where create_date between '2015-07-01' and '2015-08-15';
-
浅谈PostgreSQL中大小写不敏感问题
本文主要讨论PostgreSQL中大小写不敏感存在的问题. 默认情况下,PostgreSQL会将列名和表名全部转换为小写状态. 图1 Person与person 如图1所示,我们创建表person,其中包含name列.然后插入一条记录.执行SELECT查询时,使用列名Name和表名Person而不是name和person,发现仍然可以正常获取刚刚插入表person中的记录. 图2 创建表Person? 此时如果我们再想创建表Person,会得到一个错误,因为此时PostgreSQL实际上把表名从
-
postgresql 实现将数组变为行
有的时候需要把数组元素同表中的字段进行关系运算,首先得把array变为记录行 SELECT "unnest"(array[1,2,3]) 结果: unnest 求数组交集: SELECT "unnest"(array[1,2,3]) INTERSECT SELECT "unnest"(array[3,4,5]) 结果: unnest 3 补充:PostgreSQL单列多行变一行&一行变多行 工作中经常遇到这样一个场景,希望将某个字断查询出
-
postgresql~*符号的含义及用法说明
操作符 ~~ 等效于 LIKE, 而 ~~* 对应 ILIKE. 还有 !~~ 和 !~~* 操作符 分别代表 NOT LIKE 和 NOT ILIKE. 另外: ~ 匹配正则表达式,大小写相关 'thomas' ~ '.*thomas.*' ~*搜索 匹配正则表达式,大小写无关 'thomas' ~* '.*Thomas.*' !~ 不匹配正则表达式,大小写相关 'thomas' !~ '.*Thomas.*' !~* 不匹配正则表达式,大小写无关 'thomas' !~* '.*vadim.
-
基于PostgreSql 别名区分大小写的问题
PostgreSql是区分大小写的 如果别名的大小不一致就会提示错误: SELECT * FROM ( SELECT cpi."product_item_id" "PRODUCT_ITEM_ID" FROM prd.up_product_item cpi ) a WHERE a.PRODUCT_ITEM_ID=1 一个很简单的子查询,但是会出错,虽然从语句上看大小写是一致的,但是内部查询中还是使用了小写.PostgreSql对于大写都需要加上双引号的,不然还是视作小
-
基于PostgreSQL/openGauss 的分布式数据库解决方案
在 MySQL ShardingSphere-Proxy 逐渐成熟并被广泛采用的同时,ShardingSphere 团队也在 PostgreSQL ShardingSphere-Proxy 上持续发力.相比前期的 alpha 与 beta,5.0.0 正式版对 PostgreSQL 的协议实现.SQL 支持度.权限控制等方面进行了大量的完善,为后续全面对接 PostgreSQL 生态打下基础.ShardingSphere-Proxy 与 PostgreSQL 的生态对接,让用户能够在 Postg
-
基于PostgreSQL和mysql数据类型对比兼容
1.数值类型 整数: mysql中的整数类型和pg相比,两者有以下区别: mysql:mysql中支持int 1,2,3,4,8 字节,同时支持有符号,无符号.并且mysql中支持在数值列中指定zerofill,用来将存储的数值通过填充0的方式达到指定数据类型的长度(mysql8开始不建议使用ZEROFILL属性,并且在将来的MySQL版本中将不再支持该属性). pg:pg支持 int 2,4,8 字节,且数值都是有符号的. mysql整数类型: pg整数类型: 那么对于mysql中的1,3字节
-
基于postgresql数据库锁表问题的解决
查询是否锁表了 select oid from pg_class where relname='可能锁表了的表' select pid from pg_locks where relation='上面查出的oid' 如果查询到了结果,表示该表被锁 则需要释放锁定 select pg_cancel_backend(上面查到的pid) 补充:PostgreSQL 解决锁表.死锁问题 1.-- 查询ACTIVITY的状态等信息 SELECT T .PID, T.STATE, T.QUERY, T.WA
-
基于postgresql行级锁for update测试
创建表: CREATE TABLE db_user ( id character varying(50) NOT NULL, age integer, name character varying(100), roleid character varying, CONSTRAINT db_user_pkey PRIMARY KEY (id) ) 随便插入几条数据即可. 一.不加锁演示 1.打开一个postgreSQL的SQL Shell或pgAdmin的SQL编辑器窗口,执行: begin; s
-
基于PostgreSQL 权限解读
1 public权限解读 用户默认情况下具有public权限,public默认具有创建和使用schema的权限,因此意味着可以在schema中创建对象(包括表).列出schema中的对象,并在其权限允许时访问它们. 所以创建数据库或schema完成后做的第一件事是 1.1 创建数据库完成后 --回收schema的public权限 --revoke all on schema public from public; --正常情况使用这个 revoke all on schema public,ti
-
基于PostgreSQL pg_hba.conf 配置参数的使用说明
pg_hba.conf 配置详解 该文件位于初始化安装的数据库目录下 编辑 pg_hba.conf 配置文件 postgres@clw-db1:/pgdata/9.6/poc/data> vi pg_hba.conf TYPE 参数设置 TYPE 表示主机类型,值可能为: 若为 `local` 表示是unix-domain的socket连接, 若为 `host` 是TCP/IP socket 若为 `hostssl` 是SSL加密的TCP/IP socket DATABASE 参数设置 DATA
-
基于postgresql查询某个字段属于哪个表的说明
一.场景还原 前端小林问我,它从前端的返回的某些字段,想知道那个表有这个字段,它想操作这个表-- 二.sql语句 SELECT * FROM information_schema. COLUMNS WHERE COLUMN_NAME = 'storename'; SELECT c.relname AS "表名",a.attname AS "字段名",c.oid FROM pg_class c LEFT JOIN pg_attribute a ON a.attreli
-
基于Postgresql 事务的提交与回滚解析
用过oracle或mysql的人都知道在sqlplus或mysql中,做一个dml语句,如果发现做错了,还可以rollback;掉,但在PostgreSQL的psql中,如果执行一个dml,没有先运行begin;的话,一执行完就马上提交了,不能回滚,这样容易导致误操作的发生,有没有什么办法避免这个风险呢? 当然有,在psql中默认是打开自动提交的,我们可以关闭自动提交,方法如下: 设置\set AUTOCOMMIT off test=# create table test1 (x int); C
-
基于PostgreSQL密码重置操作
今天我在用命令行登陆postgresql的时候,忽然忘记密码了,重试了N次还是不行,然后我就试着上网找解决之道,最后完美的解决了,可是后来我才发现还有个更简单的方法,该篇博客用来记录自己沙雕行为. 工具已登陆 这个就是最简单的方法,你有工具登陆过,完全可以通过工具来修改(可是我当时完全没想到这个...),我是通过Navicat来连接的,可以直接通过Navicat来修改步骤如下: 1.连接数据库 2.点击角色 3.选择角色 4.填入新密码 5.保存之后,关闭连接,编辑连接就OK了. 工具未登录 W
随机推荐
- 点击进行复制的JS代码实例
- 在Mysql数据库里通过存储过程实现树形的遍历
- jQuery实现锚点向下平滑滚动特效示例
- 基于jquery的动态创建表格的插件
- js中判断对象是否为空的三种实现方法
- 邪恶的eval和new Function使用介绍
- 防范非法用户入侵Win 2000/XP系统七招
- java NIO 详解
- Jsp中的table多表头导出excel文件具体实现
- 一个简单的linux命令 mkdir
- Javascript复制实例详解
- jquery中的sortable排序之后的保存状态的解决方法
- PHP使用MPDF类生成PDF的方法
- 使用Grunt.js管理你项目的应用说明
- 老生常谈的跨域处理
- 用js自动判断浏览器分辨率的代码
- python中threading超线程用法实例分析
- C#编程实现发送邮件的方法(可添加附件)
- Android图片实现压缩处理的实例代码
- Python程序运行原理图文解析