原文链接:https://www.gbase.cn/community/post/4350
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。
1 字符串
字符串是多个字符组成的一个字符序列,由单引号“'”包围。
例如:'a string'。
彼此连接在一起的多个用引号括起来的字符串,等同于一个单独的字符串。如下两行的写法是等同的:
'a string'
'a' ' ' 'string'
在一个字符串中,确定的序列具有特殊的含义,每个序列以反斜线符号“\”开头,称为转义字符。GBase 8a MPP Cluster支持下列转义字符:
转义字符 | 描 述 |
\0 | ASCII 0 (NUL)字符。 |
\' | ASCII 39 单引号“'”字符。 |
\" | ASCII 34 双引号“"”字符。 |
\b | ASCII 8 退格符。 |
\n | ASCII 10 换行符。 |
\r | ASCII 13 回车符。 |
\t | ASCII 9 制表符(TAB)。 |
\\ | ASCII 92 反斜线“\”字符。 |
这些符号是大小写敏感的。例如:“\b”被解释为一个退格,但是“\B”被解释为“B”。
在其它的所有转义字符中,忽略反斜线符号。换句话说,反斜线用来解释转义字符而不是被转义。
当字符串中包含引号时:
1)字符串用单引号“'”来引用的,该字符串中的单引号“'”字符可以用两个单引号“''”方式转义。用户也可以继续使用在引号前加一个转义字符“\”的方式进行转义。
2)字符串是用单引号“'”来引用的,该字符串中的双引号“"”不需要特殊对待而且不必被重复指定或转义。
示例
示例1:使用单引号“'”包围字符串。
gbase> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello' FROM dual;
+-------+---------+-----------+--------+--------+
| hello | "hello" | ""hello"" | hel'lo | 'hello |
+-------+---------+-----------+--------+--------+
| hello | "hello" | ""hello"" | hel'lo | 'hello |
+-------+---------+-----------+--------+--------+
1 row in set
示例2:字符串中存在转义字符“\”。
gbase> SELECT 'This\nIs\nFour\nLines' FROM dual;
+--------------------+
| This
Is
Four
Lines |
+--------------------+
| This
Is
Four
Lines |
+--------------------+
1 row in set
示例3:不存在转义含义时,忽略反斜线符号。
gbase> SELECT 'disappearing\ backslash' FROM dual;
+------------------------+
| disappearing backslash |
+------------------------+
| disappearing backslash |
+------------------------+
1 row in set
如果用户想要把二进制数据插入到BLOB字段中,下列字符必须由转义字符表示:
字 符 | 描 述 |
NUL | NUL byte (ASCII 0)。需要用“\0”(一个反斜线和一个ASCII“0”字符)表示。 |
\ | 反斜线(ASCII 92)。需要用“\\”表示。 |
' | 单引号(ASCII 39)。需要用“\'”表示。 |
" | 双引号(ASCII 34)。需要用“\"”表示。 |
示例4:创建的表中productBlob字段的类型为BLOB,插入的数据中存在转义字符。
gbase> DROP TABLE IF EXISTS products;
Query OK, 0 rows affected
gbase> CREATE TABLE products (productBlob BLOB);
Query OK, 0 rows affected
gbase> INSERT INTO products VALUES('abdcdrf\\ghi\'jklm\"nopqrs\0tuvwxyz');
Query OK, 1 row affected
gbase> SELECT productBlob FROM products;
+---------------------------------+
| productBlob |
+---------------------------------+
| abdcdrf\ghi'jklm"nopqrs tuvwxyz |
+---------------------------------+
1 row in set
当写代码时,任何一个字符串都有可能包含这些特殊的字符,因此在这些字符作为SQL语句中的数据传到GBase 8a MPP Cluster之前必须进行转义。
2 数字
整数被表示为一个数字序列。浮点数使用“.”作为一个十进制数的分隔符。这两个数字类型可以前置“-”以表示一个负值。
有效整数的示例:1221、0、-32
有效浮点数的示例:-32032.6809E+10、148.00E+13
3 十六进制值
GBase 8a MPP Cluster支持十六进制数值。在数字的上下文语境中,它们作为数值等价于整数使用。
在字符串的上下文语境中,它们作为一个字符串,每一组十六进制数字被解释为对应ASCII码的字符。
示例
示例1:0xa等价于整数10。
gbase> SELECT 0xa+1 FROM dual;
+-------+
| 0xa+1 |
+-------+
| 11 |
+-------+
1 row in set
示例2:将“4742617365”转换成对应的ASCII码。
gbase> SELECT x'4742617365' FROM dual;
+---------------+
| x'4742617365' |
+---------------+
| GBase |
+---------------+
1 row in set
示例3:将“5061756c”转换成对应的ASCII码。
gbase> SELECT 0x5061756c FROM dual;
+------------+
| 0x5061756c |
+------------+
| Paul |
+------------+
1 row in set
表达式“x'hexstring'”是基于标准SQL的,表达式0x是基于ODBC的。二者是等价的。
示例4:使用HEX()函数可以将一个字符串或数值转换为一个十六进制格式的字符串。
gbase> SELECT HEX('cat') FROM dual;
+------------+
| HEX('cat') |
+------------+
| 636174 |
+------------+
1 row in set
gbase> SELECT 0x636174 FROM dual;
+----------+
| 0x636174 |
+----------+
| cat |
+----------+
1 row in set
4 布尔值
常量TRUE相当于1,而常量FALSE相当于0。
常量的名字对大小写不敏感。
示例
示例1:查询TRUE和FALSE对应的值。
gbase> SELECT TRUE, true, FALSE, false FROM dual;
+------+------+-------+-------+
| TRUE | TRUE | FALSE | FALSE |
+------+------+-------+-------+
| 1 | 1 | 0 | 0 |
+------+------+-------+-------+
1 row in set
5 NULL值
NULL不区分大小写。
注意:NULL值不同于数值类型的0或字符串类型的空串。
以上就是关于常量的所有内容,感谢阅读!
原文链接:https://www.gbase.cn/community/post/4350
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。