psotgresql之大小写
框中内容来自《PostgreSQL数据库对象名大小写敏感》
网址:http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=812899
由于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来帮我们解决这个问题,这真是个非常有趣的关键字(Ilike),对于第一种写法只需要将 LIKE 替换成ILIKE 就可以了。
最后,建议在编写 SQL脚本的时候,使用单引号做字符串常量的标识,虽然在 MS SQLServer 中双引号和单引号均可作为字符串常量的标识符,但是在 PostgreSQL 中对此就有严格的功能区分(不能用双引号作为字符串常量的标识符),为了保险起见,建议对所有的数据库对象名均使用双引号(")将其显式约定,以保证大小写的严格匹配。
评论:
一.对象名:如表名,字段名
数据库内核是区分大小写的。
只是为了方便使用,数据库在分析SQL脚本时,对不加双引号的所有对象名转化为小写字母。
除非你在对象名加上双引号。
所以
1。从建表到应用,要么都加双引号,要么都不要加。
2。如果以上这点做不到,所有的对象名给我写小写字母。
二.数据
区分大小写
假如LIKE '%a%',别指望A会出来
框中内容来自《省略PostgreSQL的SQL语句中的双引号》
内容来自:http://blog.sina.com.cn/s/blog_4fb490ff01012g5f.html
标准的SQL是不区分大小写的。但是PostgreSQL对于数据库中对象的名字允许使用支持大小写区分的定义和引用方法。方式就是在DDL中用双引号把希望支持大小的对象名括起来。比如希望创建一个叫AAA的表。如果用CREATE TABLE AAA (...);的话,创建出来的表实际上是aaa。如果希望创建大写的AAa表的话,就需要用CREATE TABLE "AAA"(...);这种双引号的方式定义对象名。这样写的缺点是查询语句必须也使用双引号的方式引用对象名。比如SELECT* FROM "AAA";否则PostgreSQL缺省会去找aaa这个对象,然后返回aaa不存在的错误。需要注意的是不仅仅是表可以这样定义和引用,对PostgreSQL中的任意对象(比如列名,索引名等)都有效。
实际上传统的SQL都是不区分大小写的,所以只要DDL和DLL按照传统(不使用双引号)的方式操作数据库对象不会有任何问题。问题出在如果表是通过PostgreSQL的pgAdmin III 工具创建的话,缺省是按照有双引号的方式创建对象的,所以DLL里面必须也要按照有双引号的方式使用。但是这种写法不是标准的,如果是通过一些通用库函数访问数据库的话,会不被支持。
建议:
1.不推荐使用pgAdmin III这个工具创建数据库对象。还是应该手工编写DDL语句。
2.不推荐在DDL里用双引号的方式创建区分大小写的对象。
3.PostgreSQL给出的建议是SQL的key word用大写,其他的名称全部使用小写。
个人操作时遇到的问题:
- 在PostgreSQL中创建用户
用SQL Shell(psql)通过用户postgres登录PostgreSQL,创建用户Administrator,
postgres=#create user Administrator
结果如下图所示:

可以知道:
由于PostgreSQL 是大小写敏感的,并默认对SQL语句中的数据库对象名称转换为小写。
所以
如果你在创建数据库对象时指定了大小写混和的对象名称,那么在通过SQL语句访问这些对象时,必须使用双引号(")将数据库对象括起来,以提示 PostgreSQL 不用帮你转换对象名为小写。
加双引号(“)后就可以创建用户Administrator,若不加则创建的用户为administrator。

- 通过windows下dos创建postgresql用户
将PostgreSQL文件夹bin路径添加到系统环境中后重启生效.
通过windows下dos创建postgresql用户是区分大小写的。
在dos下操作,通过createuser –Uolduser –P newuser来创建。
比如我们想创建postgresql数据库用户Administrator。
>createuser –U postgre –P Administrator
这样创建的数据库用户Administrator没有创建数据库的权利,可以通过pgAdmin III登录进行查看。
若使其可以创建数据库可以参照下面内容进行设置:
>createuser –U postgre –s Administrator
这样具有创建数据库能力。
psotgresql之大小写的更多相关文章
- 将现有MySQL数据库改为大小写不敏感
用过MySQL的应该都会注意到,默认情况下,Linux下安装的MySQL是大小写敏感的,也就是说Table1和table1可以同时存在.而Windows下的MySQL却是大小写不敏感的,所有表名和数据 ...
- js 处理字母 大小写的 一些函数
js中实现字母大小写转换主要用到了四个js函数: 1.toLocaleUpperCase2.toUpperCase3.toLocaleLowerCase4.toLowerCase 下面就这四个实现大小 ...
- Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
去空格及特殊符号 s.strip().lstrip().rstrip(',') 复制字符串 #strcpy(sStr1,sStr2) sStr1 = 'strcpy' sStr2 = sStr1 sS ...
- html中定义标签字母的大小写
定义和用法: text-transform 属性控制文本的大小写. 值和属性: 值 描述 none 默认.定义带有小写字母和大写字母的标准的文本. capitalize 文本中的每个单词以大写字母开头 ...
- 大小写互换-"数字字符串"转换成数字
今天穿着hacker浑浊马甲在百度编程课堂实训习题中发现了这个很简单的问题,就做了下. 为了考虑输入的是否是数字,结果写好后竟然超时了. 不过里面用到的将字符串装换成数字的方法,感觉是个收获,因此在此 ...
- git提交时支持文件名大小写的修改
在windows环境下,git提交文件时,默认对文件名大小写不敏感,若修改了文件名字的大小写,可能会导致提交时没有记录,文件名修改不成功.网上搜集了几种解决方法,现总结下: 1. 修改git conf ...
- MySQL大小写补坑记
背景:由于项目开始时数据库设计经验不足,数据库名和部分数据表名都含有大写字母.但问题是,Linux上数据库名和表名是区分大小写的,而Windows上是不区分大小写的.结果就是在看本地的数据库的时候,对 ...
- iOS改变字母的大小写
使用lowercaseString,uppercaseString -(void)test{ NSString * str = @"person"; NSString * str1 ...
- 为了防止采集,把文章中出现的URL链接随机大小写(PHP实现)
<?php $string = "http://www.kxblogs.com/n/20161115/74439155.html"; $string = explode('/ ...
随机推荐
- 如何理解 Linux 中的 load averages
原文:https://mp.weixin.qq.com/s?src=11×tamp=1533697106&ver=1047&signature=poqrJFfcNAB ...
- 归并排序——Merge Sort
基本思想:参考 归并排序是建立在归并操作上的一种有效的排序算法.该算法是采用分治法的一个非常典型的应用.首先考虑下如何将2个有序数列合并.这个非常简单,只要从比较2个数列的第一个数,谁小就先取谁,取了 ...
- eclipse svn 忽略 target目录
这个build失败的解决方案就是不要把你项目的 target目录放在src repository 里面,还有 .project 和 .classpath最好也别放到src repository 里. ...
- Ubuntu 16 桌面版使用笔记
版本:16.04.2-Ubuntu 软件安装 常用软件 sudo apt-get install curl wget htop git vim 搜狗输入法 wget http://cdn2.ime.s ...
- SpringMVC之json数据交互
在Spring3.1之后,如果使用<mvc:annotation-driven />,即使用注解驱动,默认情况下已经配置了MappingJackson2HttpMessageConvert ...
- 使用go语言编写IOS和Android程序
go语言目前已可以用来开发android和ios手机app.相关资料: 1.IOS https://groups.google.com/forum/?utm_medium=email&utm_ ...
- Django models 常用数据类型
CharField class CharField(max_length=None[, **options]) # 字符串(存储从小到大各种长度) # 如果是巨大的文本类型,可以用 TextField ...
- C#基础 阶段总结
第一部分 了解C# C#是微软公司在2000年7月发布的一种全新且简单.安全.面向对象的程序设计语言,是专门为.NET的应用而开发的.体现了当今最新的程序设计技术的功能和精华..NET框架为C#提供了 ...
- js 日期格式转换(转载)
1.当前时间转为 “yyyy-MM-dd HH:MM:SS” function getNowFormatDate() { var date = new Date(); var seperator1 = ...
- SqlServer--用代码创建和删除数据库和表
创建数据库,创建表,设置主键数据库的分离和附加MS SQLServer的每个数据库包含:1个主数据文件(.mdf)必须.1个事务日志文件(.ldf)必须.可以包含:任意多个次要数据文件(.ndf)多个 ...