【问题标题】:Are function names in PostgreSQL case insensitive?PostgreSQL 中的函数名是否不区分大小写?
【发布时间】:2011-06-10 19:19:12
【问题描述】:

在 PostgreSQL 中定义或调用函数时,大小写是否重要?

【问题讨论】:

  • 没关系。试试看! ;)
  • 应该不重要,但可以重要。

标签: postgresql


【解决方案1】:

函数名是标识符(如表名、字段名),同样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.

【讨论】:

  • 不错的答案,但是当你写小写字母时,我必须停下来想一想。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2014-01-19
      • 1970-01-01
      • 1970-01-01
      • 2014-02-15
      • 2023-03-22
      • 1970-01-01
      相关资源
      最近更新 更多