返回首页

gbase数据、南大通用产品文档:GBase8s终止 dbexport 实用程序

更新日期:2024年09月11日

您可以随时停止 dbexport 实用程序。
要取消 dbexport,请按中断键。
dbexport 实用程序在其终止前会请求确认。

概述
比较运算的结果是1(TRUE)、0(FALSE)或NULL。
这些运算可用于数字和字符串上。根据需要,字符串将会自动地被转换为数字,
而数字也可自动转换为字符串。
说明
本章中的一些函数(如GREATEST() 和LEAST())的所得值虽然不包括1 (TRUE)、0
(FALSE)或NULL,但对参数值进行比较时,也会基于下述规则。

GBase 8a MPP Cluster 使用下列规则进行比较:

如果一个或两个参数是NULL,比较的结果是NULL,除了<=>比较符
(含有NULL 参数时,<=>的比较结果不是NULL)。

如果在一个比较操作中两个参数均是字符串,
它们作为字符串被比较
(默
认不区分大小写)。

如果两个参数均是数值,它们按照数值被比较。

如果比较操作中,一个参数为字符串,另一个为数值,则将字符串转换
为数值后,按照数值进行比较。字符串转换为数值,对于数字开头的字
符串,转换为数值的结果是截取前面的数值部分;对于非数字开头的字
符串,转换成数值的结果为0。

十六进制值如果不与一个数字进行比较,那么它将被当作一个二进制字
符串。

如果参数之一是DATETIME 列类型,
而其他参数是一个常量,
在比较执
行之前,这个常量被转换为一个时间戳。

在其它情况下,参数作为浮点(REAL)数字被比较。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
644
注意
IN()中的参数不是这样的。为了安全起见,建议用户在比较时使用完整的
DATETIME/DATE/TIME 字符串。
为了进行比较,用户可以使用CAST()函数将某个值转为另外一个类型。

字符串是多个字符组成的一个字符序列,由单引号“'”包围。
例如:'a string'。
彼此连接在一起的多个用引号括起来的字符串,等同于一个单独的字符串。如下
两行的写法是等同的:
'a string'
'a' ' ' 'string'
在一个字符串中,
确定的序列具有特殊的含义,
每个序列以反斜线符号
“\”
开头,
称为转义字符。GBase 8a MPP Cluster 支持下列转义字符:
表5- 8 字符串转义字符
转义字符


\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)字符串是用单引号“'”来引用的,该字符串中的双引号“"”不需要特殊
对待而且不必被重复指定或转义。

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
638
示例
示例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 字段中,
下列字符必须由转义字符表示:
表5- 9 转义字符




NUL
NUL byte (ASCII 0)。需要用“\0”(一个反斜线和一个
ASCII“0”字符)表示。
\
反斜线(ASCII 92)。需要用“\\”表示。
'
单引号(ASCII 39)。需要用“\'”表示。
"
双引号(ASCII 34)。需要用“\"”表示。
示例4:创建的表中productBlob 字段的类型为BLOB,插入的数据中存在转义字
符。
gbase> DROP TABLE IF EXISTS products;

GBase 8a MPP Cluster 产品手册
5 数据库管理指南
文档版本953(2022-04-10)
南大通用数据技术股份有限公司
639
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 之前必须进行转义。