热门搜索 :
考研考公
您的当前位置:首页正文

postgress数据库 出现大写字母 字段名但是提示说不存在

2023-11-11 来源:东饰资讯网

报错: column "bsk001" of relation "dbdata" does not exist.

原因是数据库中字段名为BSK001,而sql语句中将大写字母自动转为小写;

也就是select BSK001 from dbdata与select bsk001 from dbdata是一样的;

难道postgress数据库遇到大写的字段名就无法操作绿吗?

select "BSK001" from dbdata  将字段名用双引号引起来就解决了。

神奇的postgress数据库,这个数据空还支持json,xml等格式的数据

 

postgress数据库 出现大写字母 字段名但是提示说不存在

标签:格式   支持   数据   span   字段   XML   解决   字母   not   

小编还为您整理了以下内容,可能对您也有帮助:

怎样设置PostgreSQL中字段和表名对大小写敏感

由于 PostgreSQL 是大小写敏感的,并默认对SQL语句中的数据库对象名称转换为小写,因此如果你在创建数据库对象时指定了大小写混和的对象名称,那么在通过SQL语句访问 这些对象时,必须使用双引号(")将数据库对象括起来,以提示 PostgreSQL 不用帮你转换对象名为小写,否则将激发“xxxxx对象不存在”的异常,譬如您的数据库中有名为 TUser 的表,您在 PostgreSQL 自带的图形化查询工具中必须使用类似这样的查询语句才能正确执行:SELECT * FROM "TUser",当然它对 SQL 标准中的保留字和关键字是不区分大小写的,所以写成 select * From "TUser" 这样也是完全可以的。

另外,PostgreSQL 对数据也是大小写敏感的,这点与 SQLServer 不同(SQLServer 默认是不敏感的),譬如在 TUser 表中有字段 Name,其中有一行 Name 字段值为“Tony Tang”的记录,如果直接使用

SELECT * FROM "TUser" WHERE "Name" LIKE '%tony%';
是查询不到这条记录的,不过你可以这么写:

SELECT * FROM "TUser" WHERE UPPER("Name") LIKE '%TONY%';

呵呵,是不是觉得这样不太好看,而且担心性能会受影响?幸好 PostgreSQL 提供了关键字 ILIKE 来帮我们解决这个问题,这真是个非常有趣的关键字(I like),对于第一种写法只需要将 LIKE 替换成 ILIKE 就可以了。

最后,建议在编写 SQL 脚本的时候,使用单引号做字符串常量的标识,虽然在 MS SQLServer 中双引号和单引号均可作为字符串常量的标识符,但是在 PostgreSQL 中对此就有严格的功能区分(不能用双引号作为字符串常量的标识符),为了保险起见,建议对所有的数据库对象名均使用双引号(")将其显式约定,以保证大小 写的严格匹配。

怎样设置PostgreSQL中字段和表名对大小写敏感

由于 PostgreSQL 是大小写敏感的,并默认对SQL语句中的数据库对象名称转换为小写,因此如果你在创建数据库对象时指定了大小写混和的对象名称,那么在通过SQL语句访问 这些对象时,必须使用双引号(")将数据库对象括起来,以提示 PostgreSQL 不用帮你转换对象名为小写,否则将激发“xxxxx对象不存在”的异常,譬如您的数据库中有名为 TUser 的表,您在 PostgreSQL 自带的图形化查询工具中必须使用类似这样的查询语句才能正确执行:SELECT * FROM "TUser",当然它对 SQL 标准中的保留字和关键字是不区分大小写的,所以写成 select * From "TUser" 这样也是完全可以的。

另外,PostgreSQL 对数据也是大小写敏感的,这点与 SQLServer 不同(SQLServer 默认是不敏感的),譬如在 TUser 表中有字段 Name,其中有一行 Name 字段值为“Tony Tang”的记录,如果直接使用

SELECT * FROM "TUser" WHERE "Name" LIKE '%tony%';
是查询不到这条记录的,不过你可以这么写:

SELECT * FROM "TUser" WHERE UPPER("Name") LIKE '%TONY%';

呵呵,是不是觉得这样不太好看,而且担心性能会受影响?幸好 PostgreSQL 提供了关键字 ILIKE 来帮我们解决这个问题,这真是个非常有趣的关键字(I like),对于第一种写法只需要将 LIKE 替换成 ILIKE 就可以了。

最后,建议在编写 SQL 脚本的时候,使用单引号做字符串常量的标识,虽然在 MS SQLServer 中双引号和单引号均可作为字符串常量的标识符,但是在 PostgreSQL 中对此就有严格的功能区分(不能用双引号作为字符串常量的标识符),为了保险起见,建议对所有的数据库对象名均使用双引号(")将其显式约定,以保证大小 写的严格匹配。

在登录时,数据库中明明有那个用户名和密码,但是却提示不存在,把程序clean一下有时就能登录进去了,是什

你最好去跟踪一个你的代码,估计你的代码是在第一次运行的时候没有去运行那块,而在你第二次运行的时候才会刷新,这样你的代码第一次不会运行,第二次才会运行,所以才会导致这样的问题出现。

另外再建议一下,如果数据库中存在用户名和密码,而说不存在,一般是不可能的,除非你的数据库没有连接成功,如果说第二次运行却正确了,就只能说明,你的数据库连接是正确的,也就是说你的代码有问题,打个断点,跟踪一下看一下那段运行在第一次运行的时候进断点没有,如果进了,就说明你的代码内部出现了问题,如果没有进,就说明是刷新的问题。

sql语法有没有区分大小写?

昨天去客户,发现程序无法应用,跟踪错误提示,提示的大致意思是“数据库表名和数据库字段名不存在”。查询后发现是SQL Server数据库设置了区分大小写的缘故(一般安装时,Oracle的正确安装下是默认转换为大写;SQL Server数据库是不转换为大写,但是使用时并不区分大小写):

下面语句是设置SQL Server数据库是否区分大小写:(表名和数据库字段名)

--修改数据库不区分大小写

alter database 数据库名称 COLLATE Chinese_PRC_CI_AS

如:alter database zjk_cx COLLATE Chinese_PRC_CI_AS

--修改数据库区分大小写

alter database 数据库名称 COLLATE Chinese_PRC_CS_AS

如:alter database zjk_cx COLLATE Chinese_PRC_CS_AS

下面是数据库各行记录内容是否区分大小写:(一般在查询时的where条件中使用)

--不区分大小写

alter database 数据库名称 alter column 字段名称 字段类型 COLLATE Chinese_PRC_CI_AS

如:alter database zjk_cx alter column DBConn varchar(500) COLLATE Chinese_PRC_CI_AS

--区分大小写

alter database 数据库名称 alter column 字段名称 字段类型 COLLATE Chinese_PRC_CS_AS

如:alter database zjk_cx alter column DBConn varchar(500) COLLATE Chinese_PRC_CS_AS

Top