南大通用GBase 8a MPP Cluster关于常量的用法介绍

原文链接:https://www.gbase.cn/community/post/4350
更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

1 字符串

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

转义字符

描  述

\0ASCII 0 (NUL)字符。
\'ASCII 39 单引号“'”字符。
\"ASCII 34 双引号“"”字符。
\bASCII 8 退格符。
\nASCII 10 换行符。
\rASCII 13 回车符。
\tASCII 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字段中,下列字符必须由转义字符表示:
 

字  符

描  述 

NULNUL 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技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

  • 14
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值