内容来源于 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 会做隐式的类型转换,不需要你手动转。