SQL常量代表一个不变的值。
Hubble中有五类常量:
nihao
。-52.7
。BIT
,例如B'20020202'
。BYTES
。例如b'\141\
。INTERVAL '5 days'
。TRUE
。Hubble支持以下字符串文字格式:
这些格式还允许编码为UTF-8的任意Unicode字符。
在任何情况下,字符串文字的实际数据类型都是使用它出现的上下文来确定的。
SQL字符串文字由单引号(')之间的任意字符序列组成,例如'hello mike'
。
要在字符串中包含单引号,请使用双单引号。例如:
select 'nihao' as c, 'he''s a good boy' as d;
c | d
--------+------------------
nihao | he's a good boy
为了与SQL标准兼容,Hubble还识别以下特殊语法:由换行符分隔的两个简单字符串文字自动连接在一起形成一个常量。例如:
select 'nihao'
' doctor!' as h;
h
-----------------
nihao doctor!
这种特殊语法仅在两个简单文字由换行符分隔时才有效,例如'hello' ' world!'
不起作用,这是SQL标准规定的。
Hubble还支持包含转义序列的字符串文字,就像编程语言C中一样。这些文字是通过在字符串文字前加上字母来构造的e,例如e'nihao\nlisan!'
支持以下转义序列:
转义序列 | 解释 |
---|---|
\a | ASCII 代码 7(BEL) |
\b | 退格(ASCII 8) |
\t | 制表符(ASCII 9) |
\n | 换行符(ASCII 10) |
\v | 垂直制表符(ASCII 11) |
\f | 换页 (ASCII 12) |
\r | 回车(ASCII 13) |
\xHH | 十六进制字节值 |
\ooo | 八进制字节值 |
\uXXXX | ASCII 代码 7 (BEL) |
\a | 16 位十六进制 Unicode 字符值 |
为了更容易在SQL代码中编写某些类型的字符串常量,Hubble支持美元符号引用的字符串文字。这对于需要包含大量单引号 (') 或反斜杠 ()的字符串特别有用。
美元符号引用的字符串具有以下形式:$
+(可选)标签 + $
+ 任意文本 + $
+(可选)标签 +$
例如:
SELECT char_length($MyCoolString$
For example, here is a regular expression using backticks: $myRegex$[foo\tbar]$myRegex$
Finally, you can use $stand-alone dollar signs without the optional tag$.$MyCoolString$);
char_length
---------------
165
位数组文字由B
前缀后跟一串用单引号括起来的二进制数字(位)组成。
例如:B'1001010101'
Hubble支持两种字节数组字面量格式:
这使用与包含字符转义的字符串文字相同的语法,使用b
前缀而不是e
. 任何字符转义都被解释为字符串文字。
例如:b'nihao,\x32Hubble'
字节数组文字和带有字符转义的字符串文字之间的两个区别如下:
BYTES
,而字符串文字的数据类型取决于上下文。这是一个Hubble特定的扩展,用于表示字节数组文字:分隔符x'
后跟任意十六进制数字序列,然后是结束符。
例如,以下格式都等效于b'cat'
:
x'636174'
Hubble识别以下SQL命名常量:
TRUE
和FALSE
,数据类型的两个可能值BOOL
。NULL
,表示不存在值的特殊SQL符号。这NULL
对于任何类型都是有效的常量:其在表达式评估期间的实际数据类型是根据上下文确定的。