GBase 8a
运维管理
文章

GBase8a_字符串函数_02

发表于2026-04-29 20:18:4323次浏览4个评论

EXPORT_SET

语法格式

EXPORT_SET(bits,on,off[,separator[,number_of_bits]])

函数说明

返回值为一个字符串,对参数 bits 的比特位,按从右到左(由低位比特到高位比特) 的顺序进行检测,值中的每个比特位值,如果为 1,得到一个 on 字符串,如果为 0,得到一个 off 字符串,字符串被参数 separator 分开(默认为逗号“,”), number_of_bits 表示被检验的二进制位数(默认为 64)。

示例

示例 1:参数 bits 的值为“5”,对应的二进制是 0101,按从右到左检测,输出为 1010,对应的 ON 和 OFF 值为“Y”,“N”,因此输出“Y,N,Y,N”。

gbase> SELECT EXPORT_SET(5,'Y','N',',',4) FROM dual;

+-----------------------------+
| EXPORT_SET(5,'Y','N',',',4) | 
+-----------------------------+
| Y,N,Y,N | 
+-----------------------------+
1 row in set

示例 2:number_of_bits 的位数大于 bits 值对应的二进制位数时,用 off 值补齐, 即“0”。

gbase> SELECT EXPORT_SET(6,'1','0',',',10) FROM dual;
+------------------------------+
| EXPORT_SET(6,'1','0',',',10) |
 +------------------------------+
| 0,1,1,0,0,0,0,0,0,0 |
 +------------------------------+
1 row in set

FIELD(str,str1,str2,str3,...)

函数说明

返回等于 str 的字符串位置。如果 str 等于 str1 则返回 1,如果 str 等于 str2 则返回 2,依次向后进行比较。都不相等时,返回值为 0;如果所有对于 FIELD()的参数 均为字符串,则所有参数均按照字符串进行比较;如果所有的参数均为数值,则 按照数值进行比较;如果 str 为 NULL,则返回值为 0,原因是 NULL 不能同任何 值进行同等比较。FIELD()是 ELT()的补数。

示例

示例 1:FIELD()的参数为字符串,所有参数按照字符串进行比较。

gbase> SELECT FIELD('ej','Hej', 'ej', 'Heja', 'hej', 'foo') FROM dual;
+-----------------------------------------------+
| FIELD('ej','Hej', 'ej', 'Heja', 'hej', 'foo') | 
+-----------------------------------------------+ 
|2|
 +-----------------------------------------------+
1 row in set

示例 2:FIELD()的参数为数字,所有参数按照数字进行比较。

gbase> SELECT FIELD('112','12','112','123','213') FROM dual;
+-------------------------------------+
| FIELD('112','12','112','123','213') | 
+-------------------------------------+ 
|2|
+-------------------------------------+ 
1 row in set

示例 3:str 与 str1,...strn 都不相等,返回值为 0。

gbase> SELECT FIELD('fo','Hej', 'ej', 'Heja', 'hej', 'foo') FROM dual;
+-----------------------------------------------+
| FIELD('fo','Hej', 'ej', 'Heja', 'hej', 'foo') | 
+-----------------------------------------------+ 
|0|
 +-----------------------------------------------+
1 row in set

FIND_IN_SET(str,strlist) 

函数说明

返回字符串 str 在 strlist 中对应的位置。参数 strlist 由字符“,”分隔的多个子串组 成;如果字符串 str 在 strlist 中,则返回匹配的位置,从 1 开始;如果字符串 str 不在 strlist 中或者 strlist 是一个空串,返回值为 0;如果 str 为 NULL,返回值为 NULL,不能同任何值进行同等比较。

示例

示例 1:字符串 str 在 strlist 中,返回其对应的位置。

gbase> SELECT FIND_IN_SET('b','a,b,c,d') FROM dual;
+----------------------------+
| FIND_IN_SET('b','a,b,c,d') | 
+----------------------------+ 
|2| 
+----------------------------+
1 row in set

HEX(N_or_S)

函数说明

返回参数对应的十六进制值。如果 N_or_S 是一个数字,则返回它的十六进制字 符串形式,在这里,N 是一个 BIGINT 数,相当于 CONV(N,10,16);如果 N_or_S 是一个字符串,则返回每个字符对应的十六进制形式,其中每个字符被转化为两 个十六进制数字。以 0xff 形式出现的字符串是此函数的反转操作,此时,将每两 位十六进制转换成其 ASCII 码输出一个字符。

示例

示例 1:N_or_S 值为数字。

gbase> SELECT HEX(255) FROM dual;
+----------+
| HEX(255) | 
+----------+
| FF | 
+----------+
1 row in set

示例 2:N_or_S 值为字符串。

gbase> SELECT HEX('abc') FROM dual;
+------------+
| HEX('abc') | 
+------------+
| 616263 | 
+------------+
1 row in set

示例 3:以 0xff 形式出现的字符串是 HEX(N_or_S)函数的反转操作。

gbase> SELECT 0x616263 FROM dual;
+----------+
| 0x616263 | 
+----------+
| abc | 
+----------+ 
1 row in set

INSERT(str,pos,len,newstr) 函数说明

示例

在字符串 str 中,从 pos 位置开始,选取 len 个字符长度的子串替换为字符串 newstr。 如果 pos 值不在长度范围之内,则返回原来的字符串;如果 len 值不在字符串剩 余长度范围之内,则替换从 pos 位置开始的其余字符串;任何一个参数是 NULL, 则返回 NULL。

示例 1:从字符串“Quadratic”的第 3 个位置开始的 4 个字符“adra”替换为“What”。 

gbase> SELECT INSERT('Quadratic', 3, 4, 'What') FROM dual;
+-----------------------------------+
| INSERT('Quadratic', 3, 4, 'What') | 
+-----------------------------------+
| QuWhattic | 
+-----------------------------------+
1 row in set

示例 2:pos 的值不在长度范围之内,返回原字符串。

gbase> SELECT INSERT('Quadratic', -1, 4, 'What') FROM dual;
+------------------------------------+
| INSERT('Quadratic', -1, 4, 'What') | 
+------------------------------------+
| Quadratic | 
+------------------------------------+
1 row in set

示例 3:len 不在字符串剩余长度范围之内,用“What”替换从第 3 个位置开始的 其余字符串。

gbase> SELECT INSERT('Quadratic', 3, 100, 'What') FROM dual;
+-------------------------------------+
| INSERT('Quadratic', 3, 100, 'What') | 
+-------------------------------------+
| QuWhat | 
+-------------------------------------+
1 row in set

INSTR()

语法格式

5-10参数说明

INSTR(str,substr) INSTR(str,substr,start_position,N)

参数说明
str字符串母串。
substr字符串子串。
start_position表示从字符串(左端)第几个字符开始匹配, 如是负数,则 从右端往前反向查找子串。可选参数,默认为 1。
nth_appearance从 start_position 开始向字符串尾方向查找第几个匹配字符 串。可选参数,默认为 1。

 

函数说明
 第一种语法功能:

说明
substr 在 str 中的位置,以 1 开始计数。

  返回的位置是按全字符串正向位置计数的,与从哪个位置开始无关

示例

返回子串 substr 在字符串 str(左端开始)第一次出现的位置。如果没有,返 回 0。如果有一个参数为 NULL,则返回 NULL。

 第二种语法功能:

1. 查找第 nth_appearance 个匹配字符串的功能;

2. 从母串的第 start_position 个字符开始查找匹配字符串的功能;

3. 支持第三个参数 start_position 为负数的情况,即从母串右侧第 |start_position|个位置反向查找子串的功能。

示例 1:返回“bar”在“foobarbar”中第一次出现的位置。

gbase> SELECT INSTR('foobarbar', 'bar') FROM dual;
+---------------------------+
| INSTR('foobarbar', 'bar') | 
+---------------------------+ 
|4| 
+---------------------------+
1 row in set

示例 2:“foobar”不在“xbar”中。

gbase> SELECT INSTR('xbar', 'foobar') FROM dual;
+-------------------------+
| INSTR('xbar', 'foobar') | 
+-------------------------+ 
|0| 
+-------------------------+
1 row in set

示例 3:如有任一参数是一个二进制字符串,则它是字母大小写敏感的。

gbase> SELECT INSTR('foobarbar', BINARY 'Bar') FROM dual;
+----------------------------------+
| INSTR('foobarbar', BINARY 'Bar') |
+----------------------------------+ 
|0| 
+----------------------------------+
1 row in set

示例 4:从字符串“beiwelcometobeijing”第三个字符开始匹配,查找“bei”第一 次出现的位置。

gbase> SELECT INSTR ('beiwelcometobeijing','bei',3) FROM dual;
+-----------------------------------+
| INSTR('beiwelcometobeijing','bei',3) | 
+-----------------------------------+
| 13 | 
+-----------------------------------+
1 row in set

示例 5:从字符串“112111222222333333”第一个字符开始匹配,查找第二个“11” 出现的位置。

gbase> SELECT INSTR ('112111222222333333','11',1,2) FROM dual;
+--------------------------------------+
| INSTR('112111222222333333','11',1,2) | 
+--------------------------------------+ 
|4| 
+--------------------------------------+
1 row in set

示例 6:从字符串“welcometochina”倒数第一个字符开始匹配,查找第一个“e” 出现的位置。

gbase> SELECT INSTR ('welcometochina','e',-1,1) FROM dual;
+----------------------------------+
| INSTR('welcometochina','e',-1,1) | 
+----------------------------------+
 |7| 
+----------------------------------+
1 row in set

LCASE(str) 函数说明

将字符串 str 中的所有字符改变为小写形式。

示例

示例 1:将“QUADRATICALLY”转为小写形式。

gbase> SELECT LCASE('QUADRATICALLY') FROM dual;
+------------------------+
| LCASE('QUADRATICALLY') | 
+------------------------+
| quadratically | 
+------------------------+
1 row in set

LEFT(str,len)

函数说明

返回字符串 str 中最左边的 len 个字符。如果 len 超出 str 长度返回整个字符串;如 果 len 小于 1 时,返回为空;如果 len 为 NULL 返回为 NULL。

示例

示例 1:返回“foobarbar”左边五个字符。

gbase> SELECT LEFT('foobarbar', 5) FROM dual;
+----------------------+
| LEFT('foobarbar', 5) | 
+----------------------+
| fooba | 
+----------------------+
1 row in set

LENGTH(str) 函数说明

示例

返回字符串 str 的长度,以字节进行计算。

示例 1:返回“text”的字节长度。

gbase> SELECT LENGTH('text') FROM dual;
+----------------+
| LENGTH('text') |
+----------------+ 
 |4|
+----------------+ 
1 row in set

示例 2:返回“南大通用”的字节长度(utf8 编码)。

gbase> SELECT LENGTH('南大通用') FROM dual; 
+------------------------+
| LENGTH('南大通用')|
 +------------------------+ 
 |12| 
 +------------------------+ 
 1 row in set

 

LOAD_FILE(file_name) 函数说明

读取文件并将这一文件按照字符串的格式返回。若文件不存在,或不能被读取, 则函数返回值为 NULL。

示例

示例 1:读取 a.txt 文件,并返回内容。

gbase> SELECT LOAD_FILE('/home/gbase/a.txt') FROM dual;
+--------------------------------+
| LOAD_FILE('/home/gbase/a.txt') | 
+--------------------------------+
| adfdfafgagsdgewr | 
+--------------------------------+
1 row in set

 

评论

登录后才可以发表评论
用户头像
GBase用户28017发表于 3个月前
学习了。
用户头像
柒柒天晴发表于 3个月前
学习了
曾云林发表于 2个月前
厉害了
GBase用户51934发表于 2个月前
闪闪发光