【发布时间】:2011-06-10 19:19:12
【问题描述】:
在 PostgreSQL 中定义或调用函数时,大小写是否重要?
【问题讨论】:
-
没关系。试试看! ;)
-
应该不重要,但可以重要。
标签: postgresql
在 PostgreSQL 中定义或调用函数时,大小写是否重要?
【问题讨论】:
标签: postgresql
函数名是标识符(如表名、字段名),同样rules 区分大小写适用于所有人。
简而言之,标识符是case insensitive, unless quoted。
更准确地说,不带引号的标识符在内部转换为 小写,然后尝试区分大小写。 这会让你的生活变得痛苦(即隐藏的错误、浪费时间),通常是在定义表或函数时使用带引号的标识符。
这就是为什么您应该始终定义自己的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.
【讨论】:
我想对于这个问题,你可以得到很多不同的答案。从技术上讲,PostgreSQL 中的函数名区分大小写。但是当您通过 SQL 处理函数时,标识符语法规则适用,即未加引号的标识符被折叠为小写。这可能会产生不区分大小写的函数名称的错觉,但这只是 SQL 语言的特性。例如,将其与过程语言的名称进行对比,即使您将标识符双引号,它们也不区分大小写。
【讨论】:
PostgreSQL 中的标识符和关键字名称不区分大小写。函数名是标识符。
【讨论】: