GBase 8a MPP Cluster (集群)-3 操作符和函数 (13)

3.3 字符串函数

3.3.45 UPPER(str)

依照当前字符集设置映射,将字符串 str 中的所有字符改变为大写,然
后返回该值。
UPPER()等价于 UCASE()。
示例 1:将字符串转换为大写。

gbase> SELECT UPPER('Hej') FROM t;
+--------------+
| UPPER('Hej') |
+--------------+
| HEJ |
+--------------+
1 row in set

3.3.46 字符串转换类型函数

GBase 8a MPP Cluster 会自动地将数字转换到字符串,或是将字符串转
换为数字。
如果将一个二进制字符串作为参数传递给一个字符串函数,结果返回也
是一个二进制字符串。
一个数字被转换为字符串,该字符串被视为是一个二进制字符串,但有
可能会影响最终结果。
示例 1:自动地将数字转换到字符串,或是将字符串转换为数字。

gbase> SELECT 1 + '1' FROM t;
+---------+
| 1 + '1' |
+---------+
| 2 |
+---------+
1 row in set
gbase> SELECT CONCAT(2,' test') FROM t;
+-------------------+
| CONCAT(2,' test') |
+-------------------+
| 2 test |
+-------------------+
1 row in set
gbase> SELECT 38.8, CONCAT(38.8) FROM t;
+------+--------------+
| 38.8 | CONCAT(38.8) |
+------+--------------+
| 38.8 | 38.8 |
+------+--------------+
1 row in set

示例 2:如果明确需要将一个数字转换为字符串,可以使用 CAST() 或
CONCAT()函数。建议使用 CAST()。

gbase> SELECT 38.8, CAST(38.8 AS CHAR) FROM t;
+------+--------------------+
| 38.8 | CAST(38.8 AS CHAR) |
+------+--------------------+
| 38.8 | 38.8 |
+------+--------------------+
1 row in set

3.3.47 expr LIKE pat [ESCAPE ‘escape- - char’]

expr LIKE pat [ESCAPE ‘escape-char’]
使用 SQL 的简单的正则表达式进行比较的模式匹配。
如果表达式 expr 匹配 pat,返回 1(TRUE),否则返回 0(FALSE)。
如果 expr 或 pat 是 NULL,那么结果为 NULL。
模式未必就是文字字符串,例如,它可以使用字符串表达式或表列。
可以在模式中使用下面所示的两个通配符与 LIKE 配合使用:
image.png
image.png
示例 1:expr 与 pat 相匹配,通配符为‚_‛,返回 1。

gbase> SELECT 'David!' LIKE 'David_' FROM t;
+------------------------+
| 'David!' LIKE 'David_' |
+------------------------+
| 1 |
+------------------------+
1 row in set

示例 2:expr 与 pat 相匹配,通配符为‚%‛,返回 1。

gbase> SELECT 'David!' LIKE '%D%v%' FROM t;
+-----------------------+
| 'David!' LIKE '%D%v%' |
+-----------------------+
| 1 |
+-----------------------+
1 row in set

若要对通配符的文字实例进行检验, 可将转义字符放在该字符前面。如果
没有指定 ESCAPE 字符, 则假设为‚\‛。
image.png
示例 3:expr 与 pat 不匹配,返回 0。

gbase> SELECT 'David!' LIKE 'David\ \ _' FROM t;
+-------------------------+
| 'David!' LIKE 'David\_' |
+-------------------------+
| 0 |
+-------------------------+
1 row in set

示例 4:转义字符‚_‛匹配‚_‛。

gbase> SELECT 'David_' LIKE 'David\ \ _' FROM t;
+-------------------------+
| 'David_' LIKE 'David\_' |
+-------------------------+
| 1 |
+-------------------------+
1 row in set

示例 5:为了指定一个不同的转义字符,可以使用 ESCAPE 子句。

gbase> SELECT 'David_' LIKE 'David|_' ESCAPE '|' FROM t;
+------------------------------------+
| 'David_' LIKE 'David|_' ESCAPE '|' |
+------------------------------------+
| 1 |
+------------------------------------+
1 row in set

示例 6 和示例 7 表明,字符串比较是忽略大小写的,除非任一操作数是
一个二进制字符串。
示例 6:

gbase> SELECT 'abc' LIKE 'ABC' FROM t;
+------------------+
| 'abc' LIKE 'ABC' |
+------------------+
| 1 |
+------------------+
1 row in set

示例 7:

gbase> SELECT 'abc' LIKE BINARY 'ABC' FROM t;
+-------------------------+
| 'abc' LIKE BINARY 'ABC' |
+-------------------------+
| 0 |
+-------------------------+
1 row in set

示例 8:LIKE 允许用在一个数字表达式上。

gbase> SELECT 10 LIKE '1%' FROM t;
+--------------+
| 10 LIKE '1%' |
+--------------+
| 1 |
+--------------+
1 row in set

注意:由于 GBase 8a MPP Cluster 在字符串中使用 C 转义语法 ( 例如,
用‚\n‛代表一个换行字符 ),在 LIKE 字符串中,必须将用到的‚\‛双写。
例如,若要查找‚\n‛, 必须将其写成‚\n‛。而若要查找‚\‛, 则必
须将其写成 it as ‘\\’;。原因是反斜线符号会被语法分析程序剥离一
次,在进行模式匹配时,又会被剥离一次,最后会剩下一个反斜线符号接受
匹配。
示例 9:如果 expr 或 pat 是 NULL,结果也是 NULL。

gbase> SELECT NULL LIKE 'David_', 'David!' LIKE NULL FROM t;
+--------------------+---------------------+
| NULL LIKE 'David_' | 'David!' LIKE NULL |
+--------------------+---------------------+
| NULL | NULL |
+--------------------+---------------------+
1 row in set

3.3.48 e e xpr NOT LIKE pat [ESCAPE ’escape- -

expr NOT LIKE pat [ESCAPE ‘escape-char’] 等价于 NOT (expr LIKE pat
[ESCAPE ‘escape-char’])。
如果表达式 expr 匹配 pat,返回 0;否则返回 1。
如果 expr 或 pat 是 NULL,那么结果为 NULL。
示例 1:expr 与 pat 进行匹配,匹配返回 0,不匹配返回 1。

gbase> SELECT 'David_' NOT LIKE 'David|_';
+-----------------------------+
| 'David_' NOT LIKE 'David|_' |
+-----------------------------+
| 1 |
+-----------------------------+
1 row in set
gbase>  SELECT 'David_' NOT LIKE 'David|_' ESCAPE '|';
+----------------------------------------+
| 'David_' NOT LIKE 'David|_' ESCAPE '|' |
+----------------------------------------+
| 0 |
+----------------------------------------+
1 row in set

示例 2:如果 expr 或 pat 是 NULL,结果也是 NULL。

gbase> SELECT NULL NOT LIKE 'David_', 'David!' NOT LIKE NULL FROM t;
+------------------------+-------------------------+
| NULL NOT LIKE 'David_' | 'David!' NOT LIKE NULL |
+------------------------+-------------------------+
| NULL | NULL |
+------------------------+-------------------------+
1 row in set

  
    展开阅读全文