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或字符串类型的空串。 

以上就是关于常量的所有内容,感谢阅读!