暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为GaussDB T 字符处理函数

墨天轮 2019-10-12
2741

字符处理函数

说明:
  • 可转成string的表达式:执行结果为数值类型、日期类型、布尔类型、BINARY、CHAR、VARCHAR或者VARCHAR2的表达式。
  • 可转成int的表达式:执行结果为数值类型、布尔类型、BINARY、CHAR、VARCHAR或者VARCHAR2的表达式。
  • 函数支持操作CLOB、BLOB类型数据的最大支持操作65534字节(length、lengthb函数操作CLOB、BLOB类型数据无长度约束)。

CONCAT

语法:

CONCAT(str[,...])

功能:拼接字符串。可用于将从不同字段获取的资料串连在一起输出。

  • 该函数可拼接一个或多个字符串,多个字符串之间以逗号“,”分割,返回结果为拼接各个参数所产生的字符串。
  • 如果一个参数是NULL,CONCAT函数则忽略该参数;但是,如果NULL使用单引号括起来,CONCAT函数则会将NULL作为字符串处理。该函数可嵌套使用。
  • 入参是字符串或可转换成字符串的表达式;返回值是字符串。

说明:返回值最大支持8000字节,超过则报错。

示例:

  • 拼接三个字符串,其中一个参数是NULL,该NULL值被忽略。
    SELECT CONCAT('11',NULL,'22'); CONCAT('11',NULL,'22') ---------------------- 1122 1 rows fetched.
  • 拼接三个字符串,其中一个字符串是NULL,该字符串不会被忽略。
    SELECT CONCAT('11','NULL','22'); CONCAT('11','NULL','22') ------------------------ 11NULL22 1 rows fetched.

CONCAT_WS

语法:

CONCAT_WS(separator, str1, str2,...)

功能:拼接一个或多个字符串,多个字符串之间以逗号分隔,返回结果为拼接各个参数所产生的字符串。

  • 如果参数是NULL,则CONCAT_WS函数忽略该参数;如果NULL用单引号括起来,则CONCAT_WS函数会将NULL作为字符串处理。
  • 该函数可嵌套使用。
  • 入参是字符串或可转换成字符串的表达式;返回值是字符串。

说明:返回值最大支持8000字节,超过则报错。

示例:

拼接三个字符串,其中一个参数是NULL,该NULL值被忽略。
SELECT CONCAT_WS('-','11',NULL,'22'); CONCAT_WS('-','11',NULL,'22') ------------------------------ 11-22 1 rows fetched.

DBMS_LOB.SUBSTR

语法:

DBMS_LOB.SUBSTR(str[,len[,start]])

功能:字符串截取函数。截取并返回str中从|start|开始的len个字节的子串。

  • 参数start表示索引位置,取值范围是正整数,表示从左向右第|start|个字节位置。
  • len表示自索引位置开始向右截取的字节数。len≤0时,函数DBMS_LOB.SUBSTR的返回值为空。
  • 入参str必须是可转成STRING的表达式,入参start、len必须是可转成INT的表达式;返回值是STRING。

示例:

从第一个字符开始,截取并返回4个字符。

select DBMS_LOB.SUBSTR('123456',4,1) FROM SYS_DUMMY; DBMS_LOB.SUBSTR('123456',4,1) --------------------------- 1234 1 rows fetched.

FIND_IN_SET

语法:

FIND_IN_SET(sub,src)

功能:返回sub在src中的索引位置。

  • sub为元素字符串,src为集合字符串,元素之间用逗号隔开。
  • 入参是可转成字符串的表达式;返回值是INTEGER。
  • 如果集合字符串查找失败,返回0,否则返回元素所在位置,从1开始计数。
  • 空格也作为字符串的一部分。

说明:

当前不支持对clob和blob数据类型的处理。

示例:

返回字符串“b”在字符串“a,b,c,d”中的索引位置。
SELECT FIND_IN_SET('b','a,b,c,d'); FIND_IN_SET('B','A,B,C,D') -------------------------- 2 1 rows fetched.

HEX

语法:

HEX(p1)

功能:返回十六进制值的字符串表示形式。

入参p1可为数值型或STRING类型;返回值是STRING。

示例:

返回字符串“abc”的十六进制字符串表示形式和数字255的十六进制数值表示形式。
SELECT HEX('abc'), HEX(255) FROM SYS_DUMMY; HEX('ABC') HEX(255) ---------- -------- 616263 FF 1 rows fetched.

HEX2BIN

语法:

HEX2BIN(str)

功能:返回十六进制字符串所表示的字节串。

返回值是BINARY。

说明:输入的十六进制字符串必须以"0x"作为前缀。

示例:

返回十六进制字符串“0x39”所表示的字节串。
SELECT HEX2BIN('0x39') FROM SYS_DUMMY; HEX2BIN('0X39') ---------------------------------------------------------------- 9 1 rows fetched.

HEXTORAW

语法:

HEXTORAW(str)

功能:返回十六进制字符串所表示的字节串。

返回值是RAW。

示例:

返回十六进制字符串“abcdef”所表示的字节串。
SELECT HEXTORAW('abcdef') FROM SYS_DUMMY; HEXTORAW('ABCDEF') ---------------------------------------------------------------- ABCDEF 1 rows fetched.

INSERT

语法:

INSERT(str,pos,len,newstr)

功能:返回字符串str,并且将自pos位置开始、长度为len的字符串替换成newstr。

  • 如果pos不在字符串str的长度内,则返回原始字符串。
  • 如果参数len的值大于自起始位置pos开始的其余字符串长度,则将自起始位置pos开始的所有字符替换为字符串newstr。
  • 入参str和newstr都是可转成STRING的表达式,入参pos和len都是可转成INTEGER的表达式;返回值是STRING。

说明:

该函数处理的是字符,返回值最大支持8000字节。

示例:

  • 返回字符串“Quadratic”,并且将自第3个字符开始的4个字符替换成新字符串“What”。
    SELECT INSERT('Quadratic', 3, 4, 'What'); INSERT('QUADRATIC', 3, 4, 'WHAT') --------------------------------- QuWhattic 1 rows fetched.
  • 返回字符串“Quadratic”,并且将自第10个字符开始的4个字符替换成新字符串“What”。在该示例中,起始位置pos不在字符串“Quadratic”的长度内,因此返回原始字符串。
    SELECT INSERT('Quadratic', 10, 4, 'What'); INSERT('QUADRATIC', 10, 4, 'WHAT') ---------------------------------- Quadratic 1 rows fetched.
  • 返回字符串“Quadratic”,并且将自第3个字符开始的100个字符替换成新字符串“What”。在该示例中,参数len的值大于自起始位置pos开始的其余字符串长度,因此将自起始位置pos开始的所有字符替换为字符串newstr。
    SELECT INSERT('Quadratic', 3, 100, 'What'); INSERT('QUADRATIC', 3, 100, 'WHAT') ----------------------------------- QuWhat 1 rows fetched.

INSTR

语法:

INSTR(str1,str2[,pos[,n]])

功能:字符串查找函数。返回要查找的字符串在源字符串中的位置,按字符计算位置。

  • str1是源字符串,str2是要查找的字符串,pos是索引位置,代表从str1的哪个位置开始查找字符串str2,该参数是可选参数,取值为非零整数,如果省略则默认为1;n代表要查找第几次出现的str2,该参数也是可选参数,取值为正整数,如果省略则默认为1。
  • 在源字符串str1中,INSTR函数按照从左向右(pos为正整数时)或从右向左(pos为负整数时)的顺序,从第|pos|个字符位置开始搜索字符串str2,直到str2第n次出现时,返回str2首字符在源字符串str1中所在的字符位置,如果没有搜索到第n次出现的str2则返回0。无论搜索顺序是从左向右还是从右向左,计算要查找的字符串在源字符串中的位置都是从左向右计算。
  • 入参str1、str2均为可转成STRING的表达式,入参pos、n均为可转成INT的表达式;返回值是INT。

示例:

  • 从第1个字符开始,从左向右在字符串“gaussdb”中搜索字符串“au”第1次出现的位置。
    SELECT INSTR('gaussdb','au', 1, 1) POSITION FROM SYS_DUMMY; POSITION ------------ 2 1 rows fetched.
  • 从倒数第1个字符开始,从右向左在字符串“gaussdb”中搜索字符串“db”第1次出现的位置。
    SELECT INSTR('gaussdb','db', -1, 1) POSITION FROM SYS_DUMMY; POSITION ------------ 6 1 rows fetched.

INSTRB

语法:

INSTRB(str1,str2[,pos[,n]])

功能:字符串查找函数。返回要查找的字符串在源字符串中的位置,按字节计算位置。

  • str1是源字符串,要在此字符串中查找。
  • str2是要在str1中查找的字符串。
  • 入参str1、str2均为可转成STRING的表达式,入参pos、n均为可转成INT的表达式,返回值是INT。
  • pos是索引位置,代表从str1的哪个位置开始查找字符串str2,该参数是可选参数,取值为非零整数,如果省略则默认为1。
  • n代表要查找第几次出现的str2,该参数也是可选参数,取值为正整数,如果省略则默认为1。

说明

  • 在源字符串str1中,INSTRB函数按照从左向右(pos为正整数时)或从右向左(pos为负整数时)的顺序,从第|pos|个字符位置开始搜索字符串str2,直到str2第n次出现时,返回str2首字符在源字符串str1中所在的字符位置,如果没有搜索到第n次出现的str2则返回0。
  • 无论搜索顺序是从左向右还是从右向左,计算要查找的字符串在源字符串中的位置都是从左向右计算。

示例:

  • 从第3个字节开始,从左向右在字符串oracleor中搜索字符串or第1次出现的位置,第一个搜索指定参数n的值,第二个搜索不指定参数n的值。
    SELECT INSTRB('oracleor','or', 3, 1) POSITION_WITH_n, INSTRB('oracleor','or', 3) POSITION_WITHOUT_n FROM SYS_DUMMY; POSITION_WITH_N POSITION_WITHOUT_N --------------- ------------------ 7 7 1 rows fetched.
  • 从第1个字节开始,从左向右分别按字节和字符搜索字符串“A”在字符串“我A”中第1次出现的位置。
    SELECT INSTRB('我A','A',1,1)AS BYTE_POSITION,INSTR('我A','A',1,1) AS WORD_POSITION FROM SYS_DUMMY; BYTE_POSITION WORD_POSITION ------------- ------------- 4 2 1 rows fetched.

INET_ATON

语法:

INET_ATON(str)

功能:将给定的网络地址转换为数字地址。

入参是点分十进制字符串。

示例:

将192.168.1.1转化为数字地址。

SQL> SELECT INET_ATON('192.168.1.1') FROM SYS_DUMMY; INET_ATON('192.168.1.1') ------------------------ 3232235777 1 rows fetched.

LEFT

语法:

LEFT(str,length)

功能:返回指定字符串的左边几位字符。

  • str是要提取子字符串的字符串。不支持CLOB类型的字符串。
  • length是一个正整数,指定从左边返回的字符个数。

说明:

  • 如果length为0或负数,则LEFT函数返回一个空字符串。
  • 如果length大于str字符串的长度,则LEFT函数返回整个str字符串。
  • 目前客户端对字符串最大支持为32767字节,故函数返回值最大为32767字节。

示例:

返回字符串“abcdefg”左边的3个字符串。
SQL> select left('abcdefg', 3) from SYS_DUMMY; LEFT('ABCDEFG', 3) ------------------ abc 1 rows fetched.

LENGTH

语法:

LENGTH(str)

功能:获取字符串长度函数。该函数返回str的字符数。

入参是可转成STRING的表达式;返回值是INT。

说明:如果输入的参数为utf-8类型,报错Nls internal error, invalid utf-8 buffer, 请使用LENGTHB函数

示例:

获取字符串“我的成绩是90分”的字符长度。
SELECT LENGTH('my score is 90') AS BYTE_LENGTH FROM SYS_DUMMY; BYTE_LENGTH ------------ 14 1 rows fetched.

LENGTHB

语法:

LENGTHB(str)

功能:获取字符串长度函数。该函数返回str的字节数。

入参是可转成STRING的表达式;返回值是INT。

说明:如果输入参数为CHAR类型,其功能等同于LENGTH。

示例:

获取字符串“我的成绩是90分”的字节长度。
SELECT LENGTHB('我的成绩是90分') AS WORD_LENGTH FROM SYS_DUMMY; WORD_LENGTH ------------ 20 1 rows fetched.

LOCATE

语法:

LOCATE(substr,str[,pos])

功能:返回字符串str中子字符串substr第一次出现的位置,起始位置是pos,参数pos省略时起始位置是第一个字符。如果自起始位置pos后,substr不在str中,则返回0。

入参substr和str是可转成STRING的表达式,入参pos是可转成INTEGER的表达式;返回值是INTEGER。

说明:

该函数处理的是字符。

示例:

  • 返回字符串“foobarbar”中子字符串“bar”第一次出现的位置,起始位置是第5个字符。
    SELECT LOCATE('bar', 'foobarbar', 5); LOCATE('BAR', 'FOOBARBAR', 5) ----------------------------- 7 1 rows fetched.
  • 子字符串“xbar”不在字符串“foobar”中,返回0。
    SELECT LOCATE('xbar', 'foobar'); LOCATE('XBAR', 'FOOBAR') ------------------------ 0 1 rows fetched.

LOWER

语法:

LOWER(str)

功能:将字符串转换成对应字符的小写,支持全球化语言。

入参是可转成STRING的表达式,返回值是STRING。

示例:

将希腊文字符串“Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω ”的所有字符转换为小写字符。
select lower('Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω ') lower; LOWER ---------------------------------------------------------------- α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω 1 rows fetched.
将字符串“ABCDEFG”的所有字符转换为小写字符。
SELECT LOWER('ABCDEFG') "Lower" FROM SYS_DUMMY; Lower ------------------ abcdefg 1 rows fetched.

LPAD

语法:

LPAD(str,pad_len[,pad_str])

功能:从左边对字符串使用指定的字符进行填充,直至字符串长度达到指定长度。可使用此函数格式化查询的输出。

  • 入参str是源字符串,表示准备被填充的字符串(可转成STRING的表达式)。
  • 入参pad_len是所返回字符串的长度,即填充后的字符串长度(若pad_len<=str长度,则将str截取从左往右的pad_len个字节)。
  • 入参pad_str表示填充字符串,如果未指定该参数,则默认为空字符。返回值是STRING。

说明:

返回值最大支持8000字节。

示例:

打印员工编号和员工姓名,对员工姓名进行左侧填充至20个字符。
--删除表employee_2017。 DROP TABLE IF EXISTS employee_2017;
--创建表employee_2017。 CREATE TABLE employee_2017(employee_id INT NOT NULL,first_name VARCHAR(10),last_name VARCHAR(10), hire_date DATETIME);
--插入记录1。 INSERT INTO employee_2017(employee_id,first_name,last_name,hire_date) VALUES(1001,'Alice','BROWN','2017-06-20 12:00:00'); --插入记录2。 INSERT INTO employee_2017(employee_id,first_name,last_name,hire_date) VALUES(102,'BOB','Smith','2017-10-20 12:00:00'); --插入记录3。 INSERT INTO employee_2017(employee_id,first_name,last_name,hire_date) VALUES(13,'ALAN','Jones','2017-05-10 12:00:00'); --提交事务。 COMMIT;
--对员工姓名进行左侧填充至20个字符。 SELECT employee_id, LPAD (last_name, 20, '.') LAST_NAME FROM employee_2017 ORDER BY last_name; EMPLOYEE_ID LAST_NAME ------------ ---------------------------------------------------------------- 1001 ...............BROWN 13 ...............Jones 102 ...............Smith 3 rows fetched.

LTRIM(str)

语法:

LTRIM(str[,set])

功能:删除字符串左侧的空格或其他预定义字符。可使用此函数格式化查询的输出。

  • 该函数从str的左端删除set中出现的所有字符,如果未指定set,则默认为删除空格。
  • 如果str是字符型数据,则必须将其括在单引号中。 LTRIM函数会查找str最左端的字符是否包含在set中,如果包含则删掉该字符,直到str最左端的字符不包含在set中时停止搜索。
  • 入参是可转成STRING的表达式,返回值是STRING。

说明:

当前不支持对CLOB数据和BLOB数据的处理。

示例:

  • 从字符串“<=====>GAUSSDB <=====>”的最左侧删除小于号(<)、大于号(>)和等于号(=)。
    SELECT LTRIM('<=====>GAUSSDB <=====>', '<>=') "LTRIM Example" FROM SYS_DUMMY; LTRIM Example ------------------ GAUSSDB <=====> 1 rows fetched.
  • 不指定参数set,因此从字符串“ GAUSSDB”的最左侧删除空格。
    SELECT LTRIM(' GAUSSDB') "LTRIM Example" FROM SYS_DUMMY; LTRIM Example ------------- GAUSSDB 1 rows fetched.
  • 从字符串“ GAUSSDB”的最左侧删除字母“G”和字母“A”。
    SELECT LTRIM('GAUSSDB', 'GA') "LTRIM Example" FROM SYS_DUMMY; LTRIM Example --------------- USSDB 1 rows fetched.

REGEXP_INSTR

语法:

REGEXP_INSTR(str,pattern[,position[,occurrence[,return_opt[,match_param[,subexpr]]]]])

功能:返回满足正则表达式的字符串的起始位置或结束位置。

  • 入参str是需要进行正则处理的字符串,支持STRING类型和NUMBER类型。
  • 入参pattern是进行匹配的正则表达式。
  • 入参position是起始位置,表示从第几个字符开始正则表达式匹配(默认为1)。
  • 入参occurrence表示标识第几个匹配组,默认为1。
  • 入参return_opt表示返回模式,0表示返回起始位置,1表示返回结束位置。
  • 入参match_param表示模式('i'表示不区分大小写进行检索;'c'表示区分大小写进行检索。默认为'c'。)。
  • 入参subexpr表示,对存在子表达式的pattern,函数返回匹配第subexpr个子表达式的字符串(默认是0)。
  • 函数返回值是INTEGER类型。

说明:当前不支持对CLOB和BLOB数据类型的处理。

示例1:

返回字符串“17,20,23”中满足正则表达式“[^,]+”的字符串的起始位置,起始位置是第1个字符,标志第3个匹配组,不区分大小写进行检索。
SELECT REGEXP_INSTR('17,20,23','[^,]+',1,3,0,'i') AS STR FROM SYS_DUMMY; STR --- 7 1 rows fetched.

示例2:

返回字符串“17,20,23”中满足正则表达式“[^,]+”的字符串的结束位置,起始位置是第1个字符,标志第3个匹配组,不区分大小写进行检索。

SELECT REGEXP_INSTR('17,20,23','[^,]+',1,3,1,'i') AS STR FROM SYS_DUMMY; STR --- 9 1 rows fetched.

REGEXP_SUBSTR

语法:

REGEXP_SUBSTR(str,pattern[,position[,occurrence[,match_param[,subexpr]]]])

功能:返回满足正则表达式的字符串。

  • 入参str是需要进行正则处理的字符串,支持STRING类型和NUMBER类型。
  • 入参pattern是进行匹配的正则表达式。
  • 入参position是起始位置,表示从第几个字符开始正则表达式匹配(默认为1)。
  • 入参occurrence表示标识第几个匹配组,默认为1。
  • 入参match_param表示模式('i'表示不区分大小写进行检索;'c'表示区分大小写进行检索。默认为'c'。)。
  • 入参subexpr表示,对存在子表达式的pattern,函数返回匹配第subexpr个子表达式的字符串(默认是0)。
  • 返回值是STRING。

说明:

当前不支持对CLOB和BLOB数据类型的处理。

示例:

返回字符串“17,20,23”中满足正则表达式“[^,]+”的字符串,起始位置是第1个字符,标志第3个匹配组,不区分大小写进行检索。
SELECT REGEXP_SUBSTR('17,20,23','[^,]+',1,3,'i') AS STR FROM SYS_DUMMY; STR --- 23 1 rows fetched.

REPLACE

语法:

REPLACE(str,src,dst)

功能:将字符串str中对应的src子串替换为dst子串。

入参str表示原始字符串,入参src表示待替换的字符串,入参dst表示替换字符串;返回值是STRING。

说明:

  • 当前不支持对CLOB数据和BLOB数据的处理。
  • 返回值最大支持8000字节,超过则报错。

示例:

将字符串“fgsgswsgs”中的“sg”替换为“eeerrrttt”。
SELECT REPLACE('fgsgswsgs', 'sg' ,'eeerrrttt') FROM SYS_DUMMY; REPLACE('FGSGSWSGS', 'SG' ,'EEERRRTTT') --------------------------------------- fgeeerrrtttsweeerrrttts 1 rows fetched.

REVERSE

语法:

REVERSE(str)

功能:返回字符串的倒序。

仅支持STRING类型。

示例:

返回字符串“ABCD”的倒序。
SELECT REVERSE('ABCD') AS STR FROM SYS_DUMMY; STR --- DCBA 1 rows fetched.

RIGHT

语法:

RIGHT(str,length)

功能:返回指定字符串的右边几位字符。

  • str是要提取子字符串的字符串。不支持CLOB类型的字符串。
  • length是一个正整数,指定将从右边返回的字符个数。

说明:

  • 如果length为0或负数,则RIGHT函数返回一个空字符串。
  • 如果length大于str字符串的长度,则RIGHT函数返回整个str字符串。
  • 目前客户端对字符串最大支持为32767字节,故函数返回值最大为32767字节。

示例:

返回字符串“abcdefg”右边的3个字符串。
SQL> select right('abcdefg', 3) from SYS_DUMMY; RIGHT('ABCDEFG', 3) ------------------- efg 1 rows fetched.

RPAD

语法:

RPAD(str,pad_len[,pad_str])

功能:从右边对字符串使用指定的字符进行填充,直至字符串长度达到指定长度。可使用此函数格式化查询的输出。

  • 入参str是源字符串,表示准备被填充的字符串(可转成STRING的表达式)。
  • 入参pad_len是所返回字符串的长度,即填充后的字符串长度(若pad_len<=str长度,则将str截取从左往右的pad_len个字节)。
  • 入参pad_str表示填充字符串,如果未指定该参数,则默认为空字符。
  • 返回值是STRING。

说明:

返回值最大支持8000字节。

示例:

拼接输出first_name和last_name,并使用空格对first_name和last_name进行右侧填充至12个字符。
--删除表employee_2017。 DROP TABLE IF EXISTS employee_2017;
--创建表employee_2017。 CREATE TABLE employee_2017(employee_id INT NOT NULL,first_name VARCHAR(10),last_name VARCHAR(10), hire_date DATETIME);
--插入记录1。 INSERT INTO employee_2017(employee_id,first_name,last_name,hire_date) VALUES(1001,'Alice','BROWN','2017-06-20 12:00:00'); --插入记录2。 INSERT INTO employee_2017(employee_id,first_name,last_name,hire_date) VALUES(102,'BOB','Smith','2017-10-20 12:00:00'); --插入记录3。 INSERT INTO employee_2017(employee_id,first_name,last_name,hire_date) VALUES(13,'ALAN','Jones','2017-05-10 12:00:00'); --提交事务。 COMMIT;
--拼接输出first_name和last_name,并使用空格对first_name和last_name进行右侧填充至12个字符。 SELECT CONCAT(RPAD (first_name,12), RPAD (last_name,12)) FROM employee_2017 ORDER BY first_name, last_name; CONCAT(RPAD (FIRST_NAME,12), RPAD (LAST_NAME,12)) ---------------------------------------------------------------- ALAN Jones Alice BROWN BOB Smith 3 rows fetched.

RTRIM

语法:

RTRIM(str[,set])

功能:删除字符串右侧的空格或其他预定义字符。可使用此函数格式化查询的输出。

  • 该函数从str的右端删除set中出现的所有字符,如果未指定set,则默认为删除空格。
  • 如果str是字符型数据,则必须将其括在单引号中。 RTRIM函数会查找str最右端的字符是否包含在set中,如果包含则删掉该字符,直到str最右端的字符不包含在set中时停止搜索。
  • 入参是可转成STRING的表达式,返回值是STRING。

说明:

当前不支持对CLOB数据和BLOB数据的处理。

示例:

  • 从字符串“<=====>GAUSSDB<=====>”的最右侧删除小于号(<)、大于号(>)和等于号(=)。
    SELECT RTRIM('<=====>GAUSSDB<=====>', '<>=') "RTRIM Example" FROM SYS_DUMMY; RTRIM Example --------------- <=====>GAUSSDB 1 rows fetched.
  • 不指定参数set,因此从字符串“ GAUSSDB ”的最右侧删除空格。
    SELECT RTRIM(' GAUSSDB ') "RTRIM Example" FROM SYS_DUMMY; RTRIM Example ------------- GAUSSDB 1 rows fetched.
  • 从字符串“GAUSSDB”的最右侧删除字母“D”和字母“B”。
    SELECT RTRIM('GAUSSDB', 'DB') "RTRIM Example" FROM SYS_DUMMY; RTRIM Example --------------- GAUSS 1 rows fetched.

SPACE

语法

SPACE(n)

功能:生成n个空格。n取值范围[0,4000]。

示例

在字符串之间插入一个空格。

SELECT CONCAT('total number:',SPACE(1),'59'); CONCAT('TOTAL NUMBER:',SPACE(1),'59') ---------------------------------------------------------------- total number: 59 1 rows fetched.

SUBSTR

语法:

SUBSTR(str, start[,len]) SUBSTR(str FROM start [FOR len])

功能:字符串截取函数。截取并返回str中从|start|开始的len个字符的子串。

  • 参数start表示索引位置,正值表示从左向右第|start|个字符位置,负值表示从右向左第|start|个字符位置。
  • 参数start取值为0时,索引位置为从左向右的第一个字符。
  • 参数len表示自索引位置开始向右截取的字符数,len≤0时,函数SUBSTR的返回值为空。len是可选参数,如果省略,则返回自索引位置开始到str末尾的所有字符。
  • 入参str必须是可转成STRING的表达式,入参start、len必须是可转成INT的表达式。
  • 返回值是STRING。

示例:

  • 从左向右第5个字符开始截取字符串,截取的字符串长度为6。
    SELECT SUBSTR('Quadratically',5,6) EXMAPLE1, SUBSTR('Quadratically' FROM 5 FOR 6) EXAMPLE2 FROM SYS_DUMMY; EXMAPLE1 EXAMPLE2 -------- -------- ratica ratica 1 rows fetched.
  • 从左向右第5个字符开始截取字符串,截取的字符串长度为0,返回值为空。
    SELECT SUBSTR('Quadratically',5,0) EXMAPLE1, SUBSTR('Quadratically' FROM 5 FOR 0) EXAMPLE2 FROM SYS_DUMMY; EXMAPLE1 EXAMPLE2 -------- -------- 1 rows fetched.
  • 从右向左第5个字符开始截取字符串,参数len省略,返回自索引位置开始到str末尾的所有字符。
    SELECT SUBSTR('Quadratically',-5) EXMAPLE1, SUBSTR('Quadratically' FROM -5) EXAMPLE2 FROM SYS_DUMMY; EXMAPLE1 EXAMPLE2 -------- -------- cally cally 1 rows fetched.

SUBSTRB

语法:

SUBSTRB(str, start[,len])

功能:字符串截取函数。截取并返回str中从|start|开始的len个字节的子串。

  • 参数start表示索引位置,正值表示从左向右第|start|个字节位置,负值表示从右向左第|start|个字节位置。
  • 参数start取值为0时,索引位置为从左向右的第一个字节。
  • 参数len表示自索引位置开始向右截取的字节数,len≤0时,函数SUBSTR的返回值为空。len是可选参数,如果省略,则返回自索引位置开始到str末尾的所有字节。
  • 入参str必须是可转成STRING的表达式,入参start、len必须是可转成INT的表达式;返回值是STRING。

示例:

  • 从左向右第5个字节开始截取字符串,截取的字节数为6。
    SELECT SUBSTRB('Quadratically',5,6) EXMAPLE FROM SYS_DUMMY; EXMAPLE -------- ratica 1 rows fetched.
  • 从左向右第5个字节开始截取字符串,截取的字节数为0,返回值为空。
    SELECT SUBSTRB('Quadratically',5,0) EXMAPLE FROM SYS_DUMMY; EXMAPLE ------- 1 rows fetched.
  • 从右向左第5个字节开始截取字符串,参数len省略,返回自索引位置开始到str末尾的所有字节。
    SELECT SUBSTRB('Quadratically',-5) EXMAPLE FROM SYS_DUMMY; EXMAPLE ------- cally 1 rows fetched.

SUBSTRING

语法:

SUBSTRING(str, start[,len]) SUBSTRING(str FROM start [FOR len])

功能:字符串截取函数。功能与SUBSTR相同,截取并返回str中从|start|开始的len个字符的子串。

  • 参数start表示索引位置,正值表示从左向右第|start|个字节位置,负值表示从右向左第|start|个字节位置。
  • 参数start取值为0时,索引位置为从左向右的第一个字节。
  • 参数len表示自索引位置开始向右截取的字节数,len≤0时,函数SUBSTR的返回值为空。len是可选参数,如果省略,则返回自索引位置开始到str末尾的所有字节。
  • 入参str必须是可转成STRING的表达式,入参start、len必须是可转成INT的表达式;返回值是STRING。

示例:

  • 从左向右第5个字符开始截取字符串,截取的字符串长度为6。
    SELECT SUBSTRING('Quadratically',5,6) EXMAPLE1, SUBSTRING('Quadratically' FROM 5 FOR 6) EXAMPLE2 FROM SYS_DUMMY; EXMAPLE1 EXAMPLE2 -------- -------- ratica ratica 1 rows fetched.
  • 从左向右第5个字符开始截取字符串,截取的字符串长度为0,返回值为空。
    SELECT SUBSTRING('Quadratically',5,0) EXMAPLE1, SUBSTRING('Quadratically' FROM 5 FOR 0) EXAMPLE2 FROM SYS_DUMMY; EXMAPLE1 EXAMPLE2 -------- ------- 1 rows fetched.
  • 从右向左第5个字符开始截取字符串,参数len省略,返回自索引位置开始到str末尾的所有字符。
    SELECT SUBSTRING('Quadratically',-5) EXMAPLE1, SUBSTRING('Quadratically' FROM -5) EXAMPLE2 FROM SYS_DUMMY; EXMAPLE1 EXAMPLE2 -------- -------- cally cally 1 rows fetched.

SUBSTRING_INDEX

语法:

SUBSTRING_INDEX(str,delim,count)

功能:字符串截取函数。

  • count为正数时,返回第count个delim之前的所有字符。
  • count为负数,返回倒数第|count|个delim后面的所有字符。
  • 当count为0时,返回值为空。
  • 入参str、delim必须是可转成STRING的表达式,长度不超过8000。
  • 入参count 必须是可转成NUMBER的表达式,取值范围[-2147483648,2147483647]。

示例:

获取IP地址第一个数字。

SELECT SUBSTRING_INDEX('192.168.0.1','.',1); SUBSTRING_INDEX('192.168.0.1','.',1) ---------------------------------- 192 1 rows fetched.

TO_NCHAR

语法:

TO_NCHAR(text_exp) TO_NCHAR(datetime_exp, [datetime_fmt])

功能:将文本表达式、日期表达式、数字等转换为NCHAR格式,可用于格式化输出结果。

示例:

将日期按照指定格式转为NCHAR输出。

SELECT TO_NCHAR(TO_DATE('2018-06-06 10:18:36', 'yyyy-mm-dd hh24:mi:ss'), 'mm-yyyy-dd') FROM SYS_DUMMY; TO_NCHAR(TO_DATE('2018-06-06 10:18:36', 'YYYY-MM-DD HH24:MI:SS') ---------------------------------------------------------------- 06-2018-06 1 rows fetched.

TRIM

语法:

TRIM ( [ LEADING | TRAILING | BOTH ] [ set ] [ FROM ] str )

功能:按指定的方向从传入的字符串中删除空格或其他预定义字符。可使用此函数格式化查询的输出。

  • TRIM方向可以有三种:
    • LEADING表示从字符串首开始删除。
    • TRAILING表示从字符串尾开始删除。
    • BOTH表示从两端都进行删除。若LEADING、TRAILING、BOTH都未指定,则默认等同于从两端都进行删除。
  • 参数set指示的是一个字符集合。只要str的开头或结尾包含这个字符集合中的任一字符,都满足trim的条件,会被执行trim操作。如果未指定set,则默认为删除空格。
  • 入参str为可转换成STRING的表达式,入参set为SQL语法的字符;返回值是STRING。

说明:

  • 该函数也可以用普通函数的参数形式调用,调用方法是TRIM( str [, set]),使用这种方法调用时,无法指定TRIM方向,默认从两端都进行删除。如果未指定set,则默认为从str的两端删除空格。
  • 当前不支持对CLOB数据和BLOB数据的处理。

示例:

从字符串“123sfd111”的两侧删除数字1。
SELECT TRIM(BOTH '1' FROM '123sfd111') FROM SYS_DUMMY; TRIM(BOTH '1' FROM '123SFD111') ------------------------------- 23sfd 1 rows fetched.

UPPER

语法:

UPPER(str)

功能:将字符串转换成对应字符的大写,支持全球化语言。

入参是可转成字符串的表达式;返回值是STRING。

示例:

将希腊文字符串“α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω”的所有字符转换为大写字符。
SELECT UPPER('α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω ') upper; UPPER ---------------------------------------------------------------- Α Β Γ Δ Ε Ζ Η Θ Ι Κ Λ Μ Ν Ξ Ο Π Ρ Σ Τ Υ Φ Χ Ψ Ω 1 rows fetched.
将字符串“abcdefg”的所有字符转换为大写字符。
SELECT UPPER('abcdefg') "Upper" FROM SYS_DUMMY; Upper ------------------ ABCDEFG 1 rows fetched.
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论