GBase8a_字符串函数_03
LOCATE()
语法格式
LOCATE(substr,str)
LOCATE(substr,str,pos)函数说明
- 第一种语法返回子串 substr 在字符串 str 中第一次出现的位置,LOCATE(substr,str)与 INSTR(str,substr)相似,只是参数的位置被颠倒;
- 第二种语法返回子串 substr 在字符串 str 中的第 pos 位置后第一次出现的位置。
说明
如果 substr 不在 str 中,则返回 0;
substr 在 str 中的位置,以 1 开始计数;
如果 pos 值大于 str 的长度,则返回为 0;
如果 pos 为 NULL,则返回 NULL。
示例
示例 1:返回“bar”在“foobarbar”中第一次出现的位置。
gbase> SELECT LOCATE('bar','foobarbar') FROM dual;
+----------------------------+
| LOCATE('bar','foobarbar') |
+----------------------------+
| 4 |
+----------------------------+
1 row in set示例 2:“xbar”不在“foobar”中,返回值为 0。
gbase> SELECT LOCATE('xbar','foobar') FROM dual;
+--------------------------+
| LOCATE('xbar','foobar') |
+--------------------------+
| 0 |
+--------------------------+
1 row in set示例 3:返回“bar”在“foobarbar”中的第 5 位后,第一次出现的位置。
gbase> SELECT LOCATE('bar','foobarbar',5) FROM dual;
+------------------------------+
| LOCATE('bar','foobarbar',5) |
+------------------------------+
| 7 |
+------------------------------+
1 row in set示例 4:如有任一参数是一个二进制字符串,它是字母大小写敏感的。
gbase> SELECT LOCATE(BINARY'bAr','foobarbar',5) FROM dual;
+------------------------------------+
| LOCATE(BINARY'bAr','foobarbar',5) |
+------------------------------------+
| 0 |
+------------------------------------+
1 row in setLOWER(str)
函数说明
将字符串 str 中的所有字符改变为小写形式。
示例
示例 1:LOWER(str)等价于 LCASE()。
gbase> SELECT LOWER('QUADRATICALLY'),LCASE('QUADRATICALLY') FROM dual;
+------------------------+------------------------+
| LOWER('QUADRATICALLY') | LCASE('QUADRATICALLY') |
+------------------------+------------------------+
| quadratically | quadratically |
+------------------------+------------------------+
1 row in setLPAD(str,len,padstr)
函数说明
用字符串 padstr 在 str 的左边填补, 直至它的长度达到 len 个字符长度, 然后返回补齐后的 str;如果 str 的长度长于 len,那么它将被截取到 len 个字符。
示例
示例 1:将“??”补到“hi”左侧,总长度为 4 位。
gbase> SELECT LPAD ('hi',4,'??') FROM dual;
+-------------------+
| LPAD('hi',4,'??') |
+-------------------+
| ??hi |
+-------------------+
1 row in set示例 2:“hi”的长度大于 1,则“hi”将被截取到 1 个字符。
gbase> SELECT LPAD('hi',1,'??') FROM dual;
+-------------------+
| LPAD('hi',1,'??') |
+-------------------+
| h |
+-------------------+
1 row in setLTRIM(str)
函数说明
移除 str 最左边的连续多个空格。
示例
示例 1:移除“ barbar”左边两个空格。
gbase> SELECT LTRIM(' barbar') FROM dual;
+-------------------+
| LTRIM(' barbar') |
+-------------------+
| barbar |
+-------------------+
1 row in setMAKE_SET(bits,str1,str2,...)
函数说明
返回一个设定值(是由“,”分开的 str 组成的字符串),由相应位在 bits 集合中为 1 的字符串组成, bits 中的比特值按照从右到左的顺序接受检验(由低比特位到高比特位)。如果 str1 对应第一位比特值为 1,str2 对应第二位比特值为 1,就返回 str1,str2。以此类推,str1,str2,...中的 NULL 值不会被添加到结果中。
示例
示例 1:将 1 的比特值按从右到左进行校验,
gbase> SELECT MAKE_SET(1,'a','b','c') FROM dual;
+-------------------------+
| MAKE_SET(1,'a','b','c') |
+-------------------------+
| a |
+-------------------------+
1 row in set“a”对应第一位比特值为 1。
示例 2:将 1 和 4 进行或运算,获得 0101 的比特值,按从右到左进行校验,即第一位和第三位的比特值为 1,返回 str1 和 str3 字符串。
gbase> SELECT MAKE_SET(1 | 4,'hello','nice','world') FROM dual;
+----------------------------------------+
| MAKE_SET(1 | 4,'hello','nice','world') |
+----------------------------------------+
| hello,world |
+----------------------------------------+
1 row in set示例 3:字符串列中的 NULL 不被添加到结果中。
gbase> SELECT MAKE_SET(1 | 4,'hello','nice',NULL,'world') FROM dual;
+---------------------------------------------+
| MAKE_SET(1 | 4,'hello','nice',NULL,'world') |
+---------------------------------------------+
| hello |
+---------------------------------------------+
1 row in set示例 4:0 没有对应的 str。
gbase> SELECT MAKE_SET(0,'a','b','c') FROM dual;
+-------------------------+
| MAKE_SET(0,'a','b','c') |
+-------------------------+
| |
+-------------------------+
1 row in setMID(str,pos,len)
函数说明
返回字符串 str 中,从 pos 位置开始,长度为 len 的子串。MID(str,pos,len)等价于SUBSTRING(str,pos,len)。
MID 包含 MID(str,pos)、 MID(str,pos,len)、 MID(str from pos)、 MID(str from pos for len)四种语法格式。
示例
示例 1:MID()的 4 种语法格式示例。
gbase> SELECT MID('Quadratically',5,6);
+--------------------------+
| MID('Quadratically',5,6) |
+--------------------------+
| ratica |
+--------------------------+
1 row in set (Elapsed: 00:00:00.00)
gbase> SELECT MID('Quadratically',5);
+------------------------+
| MID('Quadratically',5) |
+------------------------+
| ratically |
+------------------------+
1 row in set (Elapsed: 00:00:00.00)
gbase> SELECT MID('Quadratically' from 5);
+-----------------------------+
| MID('Quadratically' from 5) |
+-----------------------------+
| ratically |
+-----------------------------+
1 row in set (Elapsed: 00:00:00.00)
gbase> SELECT MID('Quadratically' from 5 for 6);
+-----------------------------------+
| MID('Quadratically' from 5 for 6) |
+-----------------------------------+
| ratica |
+-----------------------------------+
1 row in set (Elapsed: 00:00:00.00)
gbase> SELECT SUBSTRING('Quadratically',5,6),MID('Quadratically',5,6) FROM dual;
+--------------------------------+--------------------------+
| SUBSTRING('Quadratically',5,6) | MID('Quadratically',5,6) |
+--------------------------------+--------------------------+
| ratica | ratica |
+--------------------------------+--------------------------+
1 row in setNVL(string1,replace_with)
函数说明
如果 string1 为 NULL,则 NVL()函数返回 replace_with 的值,否则返回 string1 的值。
示例
示例 1:address 列的值为 NULL,返回“UNKNOWN”,否则返回 address 的值。
gbase> DROP TABLE IF EXISTS t_user;
Query OK, 0 rows affected
gbase> CREATE TABLE t_user (id int ,name varchar(10),address varchar(200));
Query OK, 0 rows affected
gbase> INSERT INTO t_user VALUES (1,'Tom','East Street'),(2,'Mike',NULL),(3,'Rose','TANGREN ROAD'),(4,'White',NULL);
Query OK, 4 rows affected
Records: 4 Duplicates: 0 Warnings: 0
gbase> SELECT id,name,NVL(address,'UNKOWN') FROM t_user;
+------+-------+-----------------------+
| id | name | NVL(address,'UNKOWN') |
+------+-------+-----------------------+
| 1 | Tom | East Street |
| 2 | Mike | UNKOWN |
| 3 | Rose | TANGREN ROAD |
| 4 | White | UNKOWN |
+------+-------+-----------------------+
4 rows in setOCT(N)
函数说明
返回一个 N 的八进制值的字符串。此处,N 是一个 BIGINT 类型的数字。如果 N 是一个 NULL,返回值也是 NULL。OCT(N)等价于 CONV(N,10,8)。
示例
示例 1:返回 12 的八进制值。
gbase> SELECT OCT(12) FROM dual;
+---------+
| OCT(12) |
+---------+
| 14 |
+---------+
1 row in set示例 2:N 是 NULL,返回值为 NULL。
gbase> SELECT OCT(NULL) FROM dual;
+-----------+
| OCT(NULL) |
+-----------+
| NULL |
+-----------+
1 row in setORD(str)
函数说明
如果字符串 str 的最左边的字符是一个多字节的字符,返回该字符的代码,代码的计算通过使用公式 ((1st byte code)+ (2nd byte code × 256)+ (3rd byte code
2562)…)计算其组成字节的数值而得出。如果最左边的字符不是一个多字节字符,返回值与 ASCII()函数的返回值相同。
示例
示例 1:str 为“2”,返回 2 对应的 ASCII 码值。
gbase> SELECT ORD('2') FROM dual;
+----------+
| ORD('2') |
+----------+
| 50 |
+----------+
1 row in set示例 2:str 为“南大通用”,返回“南”对应的代码。
gbase> SELECT ORD('南大通用') FROM dual;
+---------------------+
| ORD('南大通用') |
+---------------------+
| 15043991 |
+---------------------+
1 row in set评论
热门帖子
- 12025-12-01浏览数:182759
- 22023-05-09浏览数:25054
- 42023-09-25浏览数:18521
- 52020-05-11浏览数:17526