`
deepfuture
  • 浏览: 4398051 次
  • 性别: Icon_minigender_1
  • 来自: 湛江
博客专栏
073ec2a9-85b7-3ebf-a3bb-c6361e6c6f64
SQLite源码剖析
浏览量:80056
1591c4b8-62f1-3d3e-9551-25c77465da96
WIN32汇编语言学习应用...
浏览量:69999
F5390db6-59dd-338f-ba18-4e93943ff06a
神奇的perl
浏览量:103295
Dac44363-8a80-3836-99aa-f7b7780fa6e2
lucene等搜索引擎解析...
浏览量:285633
Ec49a563-4109-3c69-9c83-8f6d068ba113
深入lucene3.5源码...
浏览量:15001
9b99bfc2-19c2-3346-9100-7f8879c731ce
VB.NET并行与分布式编...
浏览量:67498
B1db2af3-06b3-35bb-ac08-59ff2d1324b4
silverlight 5...
浏览量:32099
4a56b548-ab3d-35af-a984-e0781d142c23
算法下午茶系列
浏览量:45965
社区版块
存档分类
最新评论

postgresql-操作符

阅读更多

4.1.3. 操作符

一个操作符是最多 NAMEDATALEN-1 (缺省 63 个字符)个下列字符的序列:

+ - * / < > = ~ ! @ # % ^ & | ` ?

不过,对操作符名字有几个限制:

 

 

  • --/* 不能出现在操作符名字中的任何地方,因为它们会被当做注释开始对待。

  • 多字符操作符不能以 +- 结束, 除非其名字至少还包含下列操作符之一:

    ~ ! @ # % ^ & | ` ?

    比如,@- 是允许的操作符名字, 但 *- 不是。这个限制允许 PostgreSQL 在不要求记号之间有空白的情况下分析 SQL 兼容的查询。

     

 

当你使用非 SQL 标准的操作符名字的时候,你通常需要用空白分隔相邻的操作符以避免歧义。 比如,如果你定义了一个叫 "@" 的左单目操作符,那么你就不能写 X*@Y;而是要写成 X* @Y 以确保 PostgreSQL 把它读成两个操作符,而不是一个。

4.1.4. 特殊字符

有些非字母数字字符有一些特殊含义,因此不能用做操作符。 它们的用法的细节可以在相应的描述语法元素的地方找到。 本节只是描述它们的存在和概括一下这些字符的目的。

 

 

  • 美元符号($)后面跟着数字用于在一个函数体定义或者准备好的语句中 表示参数的位置。在其他环境里美元符号可能是一个标识符名字或者是一个美元符包围的字串常量的一部分。

  • 圆括弧(())用于分组和强制优先级的时候含义与平常一样。 有些场合里圆括弧是作为一个特定 SQL 命令的固定语法的一部分要求的。

  • 方括弧([])用于选取数组元素。 参阅 Section 8.10 获取更多信息。

  • 逗号(,在一些语法构造里用于分隔一个列表的元素。

  • 分号(;)结束一条 SQL 命令。 它不能出现在一条命令里的任何地方,除非引号包围的来当做字符串常量或者标识符用。

  • 冒号 (:)用于从数组中选取"片段"。(参阅 Section 8.10。)在一些 SQL 方言里(比如嵌入 SQL ), 冒号用于前缀变量名。

  • 星号 (* 在某些环境里表示一个表行或者一个符合类型值的全部字段。 在用作聚集函数 COUNT 的参数时还有特殊含义。

  • 句点 (.用在数字常量里,并用于分隔模式,表和字段名字。

 

4.1.5. 注释

注释是任意以双划线开头并延伸到行尾的任意字符序列,比如:

-- 这是标准的 SQL92 注释

 

另外,还可以使用 C-风格的块注释:

/* 多行注释
 * 可以嵌套∶/* 嵌套的块注释 */
 */

这里注释以 /* 开头并扩展到对应的 */。这些块注释可以嵌套,就象 SQL99 里说的那样, 但和 C 不一样,因此我们可以注释掉一大块已经包含块注释的代码。

注释在进一步的语法分析之前被从输入流删除并用空白代替。

4.1.6. 词法优先级

Table 4-1 显示了 PostgreSQL 里面的操作符的优先级和关联性。 大多数操作符都有相同的优先级并且都是左关联的。 这种情况可能会有不那么直观的行为;比如,布尔操作符 <> 和布尔操作符 <=>= 之间有着不同的优先级。同样,当你把双目和单目操作符组合使用的时候, 有时候也需要加圆括弧。比如

SELECT 5 ! - 6;

会被分析成

SELECT 5 ! (- 6);

因为分析器不知道 ! 定义成了后缀操作符, 而不是中缀操作符。— 知道的时候只能是太晚了 — 要在本例中获得你需要的特性,你要写成

SELECT (5 !) - 6;

这是我们为扩展性付出的代价。

Table 4-1. 操作符优先级(递减)

操作符/元素 关联性 描述
. 表/字段名分隔符
:: PostgreSQL-特有的类型转换操作符
[ ] 数组元素选则
- 单目负号
^ 幂操作
* / % 乘,除,模
+ - 加,减
IS   IS TRUE, IS FALSE, IS UNKNOWN, IS NULL
ISNULL   测试是否为空值
NOTNULL   测试是否为非空值
(任何其它的) 所有其它的本地和用户定义操作符
IN   集合成员
BETWEEN   范围包含
OVERLAPS   时间间隔重叠
LIKE ILIKE SIMILAR   字符串模式匹配
< >   小于,大于
= 等于,赋值
NOT 逻辑反
AND 逻辑与
OR 逻辑或

请注意操作符优先级也适用于和上面提到的同名的内置操作符用户定义操作符。 比如,如果你为一些客户数据类型定义一个 "+" 操作符, 那么它和内置的 "+" 操作符有同样的优先级,不管你干了什么。

如果在 OPERATOR 语法里使用了模式修饰的操作符名, 比如

SELECT 3 OPERATOR(pg_catalog.+) 4;

那么 OPERATOR 构造就会有 Table 4-1 表里面为"任何其它"操作符显示的缺省优先级。 不管什么特定的操作符出现在 OPERATOR()里,都是这样。

分享到:
评论

相关推荐

    postgresql-16.2-1-windows-x64.exe

    5. 强大的查询能力:PostgreSQL 支持SQL标准,并提供丰富的SQL函数和操作符,支持窗口函数、递归查询、并行查询等高级特性。 6. 扩展性:PostgreSQL 允许用户编写自己的函数和存储过程,可以使用多种语言如C、...

    postgresql-10.12-1-linux-x64-binaries.tar.gz

    7. **扩展性:** 允许用户自定义函数、操作符、索引方法和数据类型,方便开发特定领域的应用。 8. **安全性:** 提供角色管理、权限控制、加密功能,确保数据安全。 9. **性能优化:** 自动统计分析、自动调优、...

    postgresql-10.12-1-windows-x64.exe

    同样,PostgreSQL也可以用许多方法扩展,例如通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言等。另外,因为许可证的灵活,任何人都可以以任何目的免费使用、修改和分发PostgreSQL

    postgresql-11.4-3-windows-x64.exe

    同样,PostgreSQL也可以用许多方法扩展,例如通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言等。另外,因为许可证的灵活,任何人都可以以任何目的免费使用、修改和分发PostgreSQL。

    postgresql-13.2-1-windows-x64.exe如何安装到window及问题解决

    打开命令提示符,切换到PostgreSQL的bin目录,运行`initdb -D &lt;data_directory&gt;`,其中`&lt;data_directory&gt;`是你的数据目录。 5. **检查安装日志**: - 查看安装日志以获取更具体的错误信息,通常在安装目录下的logs...

    postgresql-10.10-1-windows-x64.exe

    同样,PostgreSQL也可以用许多方法扩展,例如通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言等。另外,因为许可证的灵活,任何人都可以以任何目的免费使用、修改和分发PostgreSQL。

    postgresql-9.6.24.tar.gz

    同样,PostgreSQL也可以用许多方法扩展,例如通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言等。另外,因为许可证的灵活,任何人都可以以任何目的免费使用、修改和分发PostgreSQL。

    postgresql-10.10-1-linux-x64-binaries.tar.gz

    PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学...同样,PostgreSQL也可以用许多方法扩展,例如通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言等。

    postgresql-12.5-1-windows-x64-binaries.zip

    - 丰富的函数库和操作符,如窗口函数、GIS支持和全文搜索。 8. **高可用性**: - PostgreSQL支持复制、分区、多主复制等高级特性,用于提高数据的可用性和系统的可扩展性。 总的来说,"postgresql-12.5-1-...

    postgresql-9.3.25-1-windows-x64

    同样,PostgreSQL 可以用许多方法扩展,比如, 通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言。并且,因为许可证的灵活,任何人都可以以任何目的免费使用、修改、和分发 PostgreSQL,不管是私用、 ...

    postgresql-9.4.21-1-windows-x64

    同样,PostgreSQL 可以用许多方法扩展,比如, 通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言。并且,因为许可证的灵活,任何人都可以以任何目的免费使用、修改、和分发 PostgreSQL,不管是私用、 ...

    postgresql-11.1-1-windows-x64

    PostgreSQL是以加州大学伯克利分校...同样,PostgreSQL 可以用许多方法扩展,比如, 通过增加新的数据类型、函数、操作符、聚集函数、索引。免费使用、修改、和分发 PostgreSQL,不管是私用、商用、还是学术研究使用。

    postgresql-10 官方文档

    - **2.6 节**:表之间的连接,解释 JOIN 操作符的用法及不同类型的连接。 - **2.7 节**:聚合函数,介绍 SUM、COUNT 等聚合函数的使用方法。 - **2.8 节**:更新记录,说明 UPDATE 语句的使用方法。 - **2.9 节**:...

    postgresql-9.1-windows

    postgresql-9.1 ...同样,PostgreSQL 可以用许多方法扩展,比如, 通过增加新的数据类型、函数、操作符、聚集函数、索引。免费使用、修改、和分发 PostgreSQL,不管是私用、商用、还是学术研究使用。

    postgresql-10.3-2-windows-x64

    PostgreSQL是以加州大学伯克利分校...同样,PostgreSQL 可以用许多方法扩展,比如, 通过增加新的数据类型、函数、操作符、聚集函数、索引。免费使用、修改、和分发 PostgreSQL,不管是私用、商用、还是学术研究使用。

    postgresql-cmd-12.0.zip

    "postgresql-cmd-12.0.zip"这个压缩包文件显然包含了PostgreSQL 12.0版本的命令行工具,主要针对Windows操作系统,并且可能包括了用于在命令提示符下管理数据库的实用程序。 首先,让我们深入了解一下PostgreSQL的...

    PyPI 官网下载 | sqlalchemy-postgresql-audit-0.3.0.tar.gz

    它支持多种数据类型,包括JSON和其他复杂结构,还提供了丰富的函数和操作符,以及强大的触发器和存储过程功能。PostgreSQL与SQLAlchemy结合使用,可以为Python应用提供高效且灵活的数据存储解决方案。 **sqlalchemy...

    Linux centos7 postgresql12 离线安装包

    在Linux CentOS7系统中安装PostgreSQL 12数据库是一个常见的任务,特别是在没有互联网连接或网络环境受限的情况下,...在实际操作中,务必注意安全性和权限管理,遵循最佳实践,以保证数据库系统的稳定和数据的安全。

    postgresql-13.2-1-windows-x64-binaries.zip

    7. **JSONB操作**:对于JSONB数据类型的处理,新版本增加了更多的操作符和函数,使开发者在处理JSON数据时更加灵活。 8. **监控和诊断**:PostgreSQL 13.2增强了内置的监控和诊断工具,如pg_stat_statements,帮助...

    postgresql-10.3.tar.gz

    4. **改进的JSON支持**:包括新的JSONB操作符和函数,增强了对JSON数据类型的处理能力。 此外,PostgreSQL还提供了丰富的安全管理机制,如角色权限控制、SSL加密连接、审计日志等,确保了数据库的安全性。同时,其...

Global site tag (gtag.js) - Google Analytics