基于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

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • 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

随机推荐