PostgreSQL中的函数名不区分大小写?

PostgreSQL中的函数名不区分大小写?

问题描述:

在PostgreSQL中定义或调用函数时,有什么关系吗?PostgreSQL中的函数名不区分大小写?

+1

它应该没关系。试试看看! ;) – FrustratedWithFormsDesigner 2011-06-10 19:26:42

+1

它应该没关系,但它可能很重要。 – leonbloy 2011-06-10 23:56:30

函数名称为标识符(如表名,字段名称),关于大小写敏感性的全部相同rules

总之,标识符是不区分大小写,除非另有说明

更准确地说,一个不加引号的标识符在内部被转换为小写字母,然后尝试一个案例派生匹配。 这可能会让你的生活变得悲惨(即隐藏的bug,浪费小时),通常如果在定义表或函数时使用了带引号的标识符。

这就是为什么你应该永远定义你自己的naming convention并坚持下去。

一般建议:对标识符总是使用小写字母,并且很高兴。

db=# select now(); 
       now 
------------------------------- 
2011-06-10 16:33:06.588401-03 
(1 row) 

db=# select Now(); 
       now 
------------------------------- 
2011-06-10 16:33:08.066818-03 
(1 row) 

db=# select "now"(); 
       now 
------------------------------- 
2011-06-10 16:33:14.543381-03 
(1 row) 

db=# select "Now"(); 
ERROR: function Now() does not exist 
LINE 1: select "Now"(); 
      ^
HINT: No function matches the given name and argument types. You might need to add explicit type casts. 
+0

很好的答案,但是当你写小写时,我必须停下来想一下。 – polm23 2013-02-25 09:31:46

+0

好的。固定。谢谢 – leonbloy 2013-02-25 11:47:11

PostgreSQL中的标识符和关键字名称不区分大小写。函数名称是标识符。

我想你可以得到很多不同的答案这个问题。从技术上讲,PostgreSQL中的函数名称区分大小写。但是,当通过SQL处理函数时,将应用标识符语法规则,即将未加引号的标识符折叠为小写。这可能会给大小写不敏感的函数名称造成错觉,但它只是SQL语言的特性。例如,将此与过程语言的名称进行对比,即使您双引号标识符,过程语言也不区分大小写。