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对于任何类型都是有效的常量:其在表达式评估期间的实际数据类型是根据上下文确定的。