【转】PostgreSQL中表名、字段名大小写问题

学习hibernate的时候,数据库用了PostgreSQL,第一节课就抛错,User实体映射没有死活不能导出表。总是提示这一句:

ERROR: syntax error at or near "User"。

后来发现,如果把表名设成t_user这样的就行了,难道PostgreSQL不能用大写?又试试T_User,没有报错,到数据库里一看,哎?还是t_user!大写自动变小写了。PostgreSQL不识别大小写?用pgAdmin图形化界面创建一个User表完全没问题啊。之后又试验了一下表中的字段,发现也是这个问题,总是提示ERROR: syntax error at or near "…"

来在看pgAdmin的SQL窗口时突然发现(很多时候仔细观察真的很重要啊),有大写的地方都加了双引号
         

哦,突然开窍了,不是不识别大小写,奥秘原来在双引号上。

先用SQL语句试试建立一个名字都是大写字母的表,记得表名加上双引号,运行无错误,成功!
       Hibernate例子中有两种解决办法,一种呢,就是表名用小写,另一种就是大写的加双引号,当然,这时候你会问,俩双引号也不行啊,用转义符号呗。

JPA例子中:

小结:

  1. PostgreSQL对表名、字段名都是区分大小写的。在图形化界面可以正常新建。用SQL语句的时候需要加双引号,如果jdbc查询等处,记得使用转义符号。
  2. PostgreSQL在SQL语句中对大小写是不敏感的

select ID from t_user  和 select id from t_user

都会从t_user这个表中查询id这个字段。如果要查询大写字母的字段,同样要加上双引号:select "ID" from t_user

时间: 2024-11-05 03:19:54

【转】PostgreSQL中表名、字段名大小写问题的相关文章

删除约束名字段名

ALTER TABLE UserInfo DROP CONSTRAINT  DF__UserInfo__YJ_Win__2AC04CAA ALTER TABLE UserInfo   DROP COLUMN YJ_WinNum GO USE [hsh_db_2013_11_18] GO DECLARE @return_value int EXEC @return_value = [dbo].[p_SelectByPage]   @SelectList = N'*',   @TableSource

数据库的表名字段名大小写问题

今天发现它真的是一个问题. 拿我最喜欢的Oracle来说吧.一般情况下,建表不管大小写,建完表名.字段名总是大写的,这样你不得不在单词之间加下划线,从而增加了字段名长度,有时就超长了.在select的结果中显示也不美观.Oracle也支持以双引号括起来的字段名,不过,你可要注意啦,用"Ok"建的字段名用"OK"."ok"和Ok都是查不到的,必须用"Ok".我只想说一句,Oracle在这点上你就搞不懂用户的需求了吧.也许Orac

关于mysql的表名/字段名/字段值是否区分大小写的问题

http://www.2cto.com/database/201202/121253.html 1.mysql默认情况下是否区分大小写,使用show Variables like '%table_names'查看lower_case_table_names的值,0代表区分,1代表不区分. 2.mysql对于类型为varchar数据默认不区分大小写,但如果该字段以“*_bin”编码的话会使mysql对其区分大小写. 3.mysql对于字段名的策略与varchar类型数据相同.即:默认不区分大小写,

显示数据库的所有表名,字段名,库名

1.显示所有的表名: show tables from xxx 显示表的详细信息: desc xxx表名 2.显示所有的字段名,并用,号分割: select GROUP_CONCAT(column_name) from information_schema.columns where table_name= 'xxx表名'; 3.显示所有的数据库名: show databases

SQL 查找表名 字段名

转载:http://www.accessoft.com/article-show.asp?id=6135 经常碰到一些忘记表名称的情况,此时只记得个大概,此时可通过查询系统表Sysobjects找到所要的表名,如要查找包含用户的表名,可通过以下SQL语句实现, Select * From sysobjects Where name like '%user%' 如果知道列名,想查找包含有该列的表名,可加上系统表syscolumns来实现,如想查找列名中包含有user的所有表名,可通过以下SQL语句

—查询数据库中所有的表名字段名说明 详细信息

——直接放在需要查询的库中执行即可. SELECT (case when a.colorder=1 then d.name else null end) 表名, a.colorder 字段序号,a.name 字段名, (case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '√'else '' end) 标识, (case when (SELECT count(*) FROM sysobjects WHERE (name in (S

DM7表名/字段名等对象的命名长度限制

一 问题   业务升级过程中,涉及到数据库结构的更改,对于某些表的字段进行了重命名,在修改表的字段名的过程中,遇到了"标志符长度非法"的问题,如下图所示:  这里先说明一下,对于DM7数据库,表名.字段名等对象命名字节个数限制在了128个字节,是无法更改的!具体参见<DM7_SQL语言使用手册>中的3.6.1 基表定义语句中的说明,摘录如下: 表名的要求:<表名> 指明被创建的基表名,基表名最大长度 128 字节:如果是分区表,主表名和分区名遵循"主表

mybatis动态接收表名,字段名,字段值

由于没分清mybatis中的$和#的区别,在处理数据上折腾了许久. 案例如下: 我要通过在实体MisWorkflowCommon中取值,在mybatis对应的映射文件的SQL中获取到对应的值,从而进行update处理,修改后的部分mybatis文件如下: <update id="updateServiceStatus" parameterType="com.jiayou.cps.pojo.workflowCommon.MisWorkflowCommon">

mysql中修改表字段名/字段长度/字段类型详解

先来看看常用的方法 MySql的简单语法,常用,却不容易记住.当然,这些Sql语法在各数据库中基本通用.下面列出: 1.增加一个字段 alter table user add COLUMN new1 VARCHAR(20) DEFAULT NULL; //增加一个字段,默认为空alter table user add COLUMN new2 VARCHAR(20) NOT NULL; //增加一个字段,默认不能为空 2.删除一个字段 alter table user DROP COLUMN ne

数据库中表及字段的编码设置

1.设置数据库表的编码 ---alter table 表名 default character set utf8; 在设置完表的编码后,使用 show create table 表名;查询编码格式. 可能你会发现表中列的编码格式仍然没有发生改变,因此需要改变列的编码格式. 2.设置表中字段的编码格式 ---alter table 表名 change 字段名 字段名 字段的数据类型 character set utf8; eg.alter table product change cid cid