内容来源于 PostgreSQL 文档。
Identifier
可以用 双引号 包裹(quoted),也可以不包裹(unquoted):
-- Unquoted
UPDATE MY_TABLE SET A = 5;
-- Quoted
UPDATE "my_table" SET A = 5;- Unquoted:大小写不敏感。PG 会将其统一成小写;SQL 标准统一成大写
- Quoted:大小写敏感
Identifier 可以用 Unicode:U&"d\0061t\+000061"。
Constants
String Constants
字符串常量,用 单引号 包裹:'data'。同时可以用:
- Unicode:
U&'d\0061t\+000061'。注意这里是单引号,区别于 identifier 中的双引号 - C-style escapes:
E'Hello\nWorld' - Bit-String Constants:
B'1001' - Dollar-quoted string constants:
$$Dianne's horse$$
Dollar-quoted string constants 是比较奇怪的设计。当你的字符串常量中有单引号时,你需要写两个 '' 来表示:'Dianne''s horse'。Dollar-quoted 可以让你避免这种麻烦:
$$Dianne's horse$$
$SomeTag$Dianne's horse$SomeTag$被 $$ 或者是 $SomeTag$ 包裹的部分即是字符串常量,不需要转义单引号 '。
Numberic Constants
数值常量。略。
类型转换
语法:
CAST ( <expression> AS <type> )
<expression>::<type>SQL 在设计上,除了数值之外的绝大部分类型,都支持接受一个字符串,再做类型转换成本类型。比如 date,支持 YYYY-mm-dd 字符串。INSERT INTO 时,如果传一个字符串给这种类型时,DB 会做隐式的类型转换,不需要你手动转。