CONCAT

声明

  1. CONCAT(str1, .., strN)

说明

把多个字符串连接成一个字符串。参数中包含 NULL 时,返回 NULL

例子

  1. obclient> SELECT
  2. CONCAT('test','obclient', '1.0'),
  3. CONCAT('test','obclient', NULL)
  4. \G
  5. *************************** 1. row ***************************
  6. CONCAT('test','obclient', '1.0'): testobclient1.0
  7. CONCAT('test','obclient', NULL): NULL
  8. 1 row in set (0.01 sec)

CONCAT_WS

声明

  1. CONCAT_WS(separator, str1, .., strN)

说明

把多个字符串连接成一个字符串,相邻字符串间使用 separator 分隔。参数中包含 NULL 时,将忽略 NULL

例子

  1. obclient> SELECT
  2. CONCAT_WS('_', 'First', 'Second'),
  3. CONCAT_WS('_', 'First', NULL, 'Second')
  4. \G
  5. *************************** 1. row ***************************
  6. CONCAT_WS('_', 'First', 'Second'): First_Second
  7. CONCAT_WS('_', 'First', NULL, 'Second'): First_Second
  8. 1 row in set (0.00 sec)

FORMAT

声明

  1. FORMAT(X,D)

说明

把数字 X 格式化为“#,###,###.##”格式,四舍五入到 D 位小数,并以字符串形式返回结果(如果整数部分超过三位,会用“,”作为千分位分隔符)。如果 D 为 0,则结果没有小数点或小数部分。

例子

  1. obclient> SELECT FORMAT(12332.123456, 4) from DUAL;
  2. +-------------------------+
  3. | format(12332.123456, 4) |
  4. +-------------------------+
  5. | 12,332.1235 |
  6. +-------------------------+
  7. 1 row in set (0.00 sec)
  8. obclient> SELECT FORMAT(12332.1, 4) from DUAL;
  9. +--------------------+
  10. | format(12332.1, 4) |
  11. +--------------------+
  12. | 12,332.1000 |
  13. +--------------------+
  14. 1 row in set (0.01 sec)
  15. obclient> SELECT FORMAT(12332.2, 0) from DUAL;
  16. +--------------------+
  17. | format(12332.2, 0) |
  18. +--------------------+
  19. | 12,332 |
  20. +--------------------+
  21. 1 row in set (0.00 sec)

SUBSTR

声明

  1. SUBSTR(str, pos)
  2. SUBSTR(str, pos, len)
  3. SUBSTR(str FROM pos)
  4. SUBSTR(str FROM pos FOR len)

说明

返回 str 的子字符串,起始位置为 pos,长度为 len。参数中包含 NULL 时,返回 NULL

  • 不指定 len 时,返回的子字符串从 pos 位置开始到 str 结尾。

  • pos 值为负数时,从 str 尾部向头部倒序确定起始位置。

  • len 小于等于 0,或 pos 指定的起始位置非法时,返回空字符串。

例子

  1. obclient> SELECT
  2. SUBSTR('abcdefg', 3),
  3. SUBSTR('abcdefg', 3, 2),
  4. SUBSTR('abcdefg', -3),
  5. SUBSTR('abcdefg', 3, -2),
  6. SUBSTR('abcdefg' from -4 for 2)
  7. \G
  8. *************************** 1. row ***************************
  9. SUBSTR('abcdefg', 3): cdefg
  10. SUBSTR('abcdefg', 3, 2): cd
  11. SUBSTR('abcdefg', -3): efg
  12. SUBSTR('abcdefg', 3, -2):
  13. SUBSTR('abcdefg' from -4 for 2): de
  14. 1 row in set (0.01 sec)

SUBSTRING

声明

  1. SUBSTRING(str, pos)
  2. SUBSTRING(str, pos, len)
  3. SUBSTRING(str FROM pos)
  4. SUBSTRING(str FROM pos FOR len)

说明

SUBSTR

TRIM

声明

  1. TRIM([[{BOTH | LEADING | TRAILING}] [remstr] FROM] str)

说明

删除字符串所有前缀和/或后缀,默认为 BOTH。参数中包含 NULL 时,返回 NULL

例子

  1. obclient> SELECT
  2. TRIM(' bar '),
  3. TRIM(LEADING 'x' FROM 'xxxbarxxx'),
  4. TRIM(BOTH 'x' FROM 'xxxbarxxx'),
  5. TRIM(TRAILING 'x' FROM 'xxxbarxxx')
  6. \G
  7. *************************** 1. row ***************************
  8. TRIM(' bar '): bar
  9. TRIM(LEADING 'x' FROM 'xxxbarxxx'): barxxx
  10. TRIM(BOTH 'x' FROM 'xxxbarxxx'): bar
  11. TRIM(TRAILING 'x' FROM 'xxxbarxxx'): xxxbar
  12. 1 row in set (0.01 sec)

LTRIM

声明

  1. LTRIM(str)

说明

删除字符串左侧的空格。

RTRIM

声明

  1. RTRIM(str)

说明

删除字符串右侧的空格。

ASCII

声明

  1. ASCII(str)

说明

返回字符串最左侧字符的 ASCII 码。

ORD

声明

  1. ORD(str)

说明

返回字符串最左侧字符的字符码。单字节编码如果最左侧字符是多字节编码字符,返回值计算规则如下:

  1. (1st byte code)
  2. + (2nd byte code * 256)
  3. + (3rd byte code * 256^2) ...

例子

  1. obclient> SELECT ORD('中国');
  2. +---------------+
  3. | ORD('中国') |
  4. +---------------+
  5. | 14989485 |
  6. +---------------+
  7. 1 row in set (0.01 sec)

LENGTH

声明

  1. LENGTH(str)

说明

返回 str 的字节长度。

例子

  1. obclient> SELECT LENGTH('中国'), LENGTH('hello');
  2. +------------------+-----------------+
  3. | LENGTH('中国') | LENGTH('hello') |
  4. +------------------+-----------------+
  5. | 6 | 5 |
  6. +------------------+-----------------+
  7. 1 row in set (0.01 sec)

CHAR_LENGTH

声明

  1. CHAR_LENGTH(str)

说明

返回字符串包含的字符数。

例子

  1. obclient> SELECT CHAR_LENGTH('中国'), CHAR_LENGTH('hello');
  2. +-----------------------+----------------------+
  3. | CHAR_LENGTH('中国') | CHAR_LENGTH('hello') |
  4. +-----------------------+----------------------+
  5. | 2 | 5 |
  6. +-----------------------+----------------------+
  7. 1 row in set (0.00 sec)

UPPER

声明

  1. UPPER(str)

说明

将字符串中的小写字母转化为大写字母。

例子

  1. obclient> obclient> SELECT UPPER('obclient您好!');
  2. +----------------------------+
  3. | UPPER('obclient您好!') |
  4. +----------------------------+
  5. | OBCLIENT您好! |
  6. +----------------------------+
  7. 1 row in set (0.00 sec)

LOWER

声明

  1. LOWER(str)

说明

将字符串中的大写字母转化为小写字母。

例子

  1. obclient> SELECT LOWER('obclient您好!');
  2. +-----------------------------+
  3. | LOWER('obclient您好!') |
  4. +-----------------------------+
  5. | obclient您好! |
  6. +-----------------------------+
  7. 1 row in set (0.01 sec)

HEX

声明

  1. HEX(str)

说明

将数字或字符串转化为十六进制字符串。

例子

  1. obclient> SELECT HEX(255), HEX('abc');
  2. +----------+------------+
  3. | HEX(255) | HEX('abc') |
  4. +----------+------------+
  5. | FF | 616263 |
  6. +----------+------------+
  7. 1 row in set (0.00 sec)

UNHEX

声明

  1. UNHEX(str)

说明

将十六进制字符串转化为正常字符串。

例子

  1. obclient> SELECT UNHEX('4f6365616e42617365');
  2. +-----------------------------+
  3. | UNHEX('4f6365616e42617365') |
  4. +-----------------------------+
  5. | OceanBase |
  6. +-----------------------------+
  7. 1 row in set (0.01 sec)

MD5

声明

  1. MD5(str)

说明

返回字符串的 MD5 值。

例子

  1. obclient> SELECT MD5(1);
  2. +----------------------------------+
  3. | MD5(1) |
  4. +----------------------------------+
  5. | c4ca4238a0b923820dcc509a6f75849b |
  6. +----------------------------------+
  7. 1 row in set (0.00 sec)

INT2IP

声明

  1. INT2IP(int_value)

说明

将整数内码转换成 IP 地址。

例子

  1. obclient> SELECT
  2. INT2IP(16777216),
  3. HEX(16777216),
  4. INT2IP(1)
  5. \G
  6. *************************** 1. row ***************************
  7. INT2IP(16777216): 1.0.0.0
  8. HEX(16777216): 1000000
  9. INT2IP(1): 0.0.0.1
  10. 1 row in set (0.01 sec)

IP2INT

声明

  1. IP2INT('ip_addr')

说明

将 IP 地址转换成整数内码。

例子

  1. obclient> SELECT
  2. IP2INT('0.0.0.1'),
  3. HEX(IP2INT('0.0.0.1')),
  4. HEX(IP2INT('1.0.0.0'))
  5. \G
  6. *************************** 1. row ***************************
  7. IP2INT('0.0.0.1'): 1
  8. HEX(IP2INT('0.0.0.1')): 1
  9. HEX(IP2INT('1.0.0.0')): 1000000
  10. 1 row in set (0.01 sec)

LIKE

声明

  1. str1 [NOT] LIKE str2 [ESCAPE str3]

说明

字符串通配符匹配。参数中包含 NULL 时,返回 NULL

通配符包括:

  • %:匹配任意长度字符串。

  • _:匹配单个字符。

ESCAPE 用于定义转义符,如果 str2 中包含 str3,在匹配时 str3 后的字符将做为普通字符处理。

例子

  1. obclient> SELECT 'ab%' LIKE 'abc%' ESCAPE 'c';
  2. +------------------------------+
  3. | 'ab%' LIKE 'abc%' ESCAPE 'c' |
  4. +------------------------------+
  5. | 1 |
  6. +------------------------------+
  7. 1 row in set (0.01 sec)

REGEXP

声明

  1. str [NOT] REGEXP | RLIKE pat

说明

正则匹配。参数中包含 NULL 时,返回 NULL

例子

  1. obclient> SELECT
  2. 1234 REGEXP 1,
  3. 'hello' RLIKE 'h%'
  4. \G
  5. *************************** 1. row ***************************
  6. 1234 REGEXP 1: 1
  7. 'hello' RLIKE 'h%': 0
  8. 1 row in set (0.01 sec)

REPEAT

声明

  1. REPEAT(str, count)

说明

返回 str 重复 count 次组成的字符串。count 小于等于 0 时,返回空字符串。参数中包含 NULL 时,返回 NULL

例子

  1. obclient> SELECT
  2. REPEAT('1', -1),
  3. REPEAT(null, null),
  4. REPEAT('Abc', 4)
  5. \G
  6. *************************** 1. row ***************************
  7. REPEAT('1', -1):
  8. REPEAT(null, null): NULL
  9. REPEAT('Abc', 4): AbcAbcAbcAbc
  10. 1 row in set (0.01 sec)

SPACE

声明

  1. SPACE(N)

说明

返回包含 N 个空格的字符串。

SUBSTRING_INDEX

声明

  1. SUBSTRING_INDEX(str, delim, count)

说明

在定界符 delim 以及 count 出现前,从字符串 str 返回字符串。若 count 为正值,则返回最终定界符(从左边开始)左边的一切内容。若 count 为负值,则返回定界符(从右边开始)右边的一切内容。任意一个参数为 NULL,返回 NULL;若 strdelim 为空字符串,则返回空串;若 count = 0, 返回空串。

str, delim, count 参数支持数值与字符串的隐式转换。

例子

  1. obclient>select substring_index('abcdabc', 'abc', 0), substring_index('abcdabc', 'abc', 1), substring_index('abcdabc', 'abc', 2), substring_index('abcdabc', 'abc', 3), substring_index('abcdabc', 'abc', -1), substring_index('abcdabc', 'abc', -2), substring_index('abcdabc', 'abc', -3)\G;
  2. *************************** 1. row ***************************
  3. substring_index('abcdabc', 'abc', 0):
  4. substring_index('abcdabc', 'abc', 1):
  5. substring_index('abcdabc', 'abc', 2): abcd
  6. substring_index('abcdabc', 'abc', 3): abcdabc
  7. substring_index('abcdabc', 'abc', -1):
  8. substring_index('abcdabc', 'abc', -2): dabc
  9. substring_index('abcdabc', 'abc', -3): abcdabc
  10. 1 row in set (0.00 sec)

LOCATE

声明

LOCATE(substr,str) , LOCATE(substr,str,pos)

说明

第一个语法返回字符串 str 中子字符串 substr 的第一个出现位置。第二个语法返回字符串 str 中子字符串 substr 的第一个出现位置, 起始位置在 pos。如若 substr 不在 str 中,则返回值为 0。

例子

  1. obclient> SELECT LOCATE('bar', 'foobarbar'), LOCATE('xbar', 'foobar'), LOCATE('bar', 'foobarbar',5);
  2. +----------------------------+--------------------------+------------------------------+
  3. | LOCATE('bar', 'foobarbar') | LOCATE('xbar', 'foobar') | LOCATE('bar', 'foobarbar',5) |
  4. +----------------------------+--------------------------+------------------------------+
  5. | 4 | 0 | 7 |
  6. +----------------------------+--------------------------+------------------------------+
  7. 1 row in set (0.00 sec)

POSITION

声明

POSITION(substr IN str)

说明

LOCATE 同义。

INSTR

声明

INSTR(str,substr)

说明

返回字符串 str 中子字符串的第一个出现位置。这和 LOCATE() 的双参数形式相同,除非参数的顺序被颠倒。

例子

  1. obclient> SELECT INSTR('foobarbar', 'bar'), INSTR('xbar', 'foobar');
  2. +---------------------------+-------------------------+
  3. | INSTR('foobarbar', 'bar') | INSTR('xbar', 'foobar') |
  4. +---------------------------+-------------------------+
  5. | 4 | 0 |
  6. +---------------------------+-------------------------+
  7. 1 row in set (0.00 sec)

REPLACE

声明

REPLACE(str, from_str, to_str)

说明

返回字符串 str 以及所有被字符 to_str 替代的字符串 from_str

例子

  1. obclient> SELECT REPLACE('abc.efg.gpg.nowdew.abc.dabc.e', 'abc.', 'www');
  2. +---------------------------------------------------------+
  3. | REPLACE('abc.efg.gpg.nowdew.abc.dabc.e', 'abc.', 'www') |
  4. +---------------------------------------------------------+
  5. | wwwefg.gpg.nowdew.wwwdwwwe |
  6. +---------------------------------------------------------+
  7. 1 row in set (0.00 sec)

FIELD

声明

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

说明

返回参数 strstr1, str2, str3,… 列表中的索引位置(从 1 开始的位置)。在找不到 str 的情况下,返回值为 0。

如果所有的对于 FIELD() 的参数均为字符串,则所有参数均按照字符串进行比较。如果所有的参数均为数字,则按照数字进行比较。否则,参数均按照 double 类型进行比较。

如果 str 为 NULL,则返回值为 0,原因是 NULL 不能同任何值进行同等比较。FILED()ELT() 的补数。

例子

  1. obclient> select field('abc','abc1','abc2','abc','abc4','abc'), field(NULL, 'null1', NULL);
  2. +-----------------------------------------------+----------------------------+
  3. | field('abc','abc1','abc2','abc','abc4','abc') | field(NULL, 'null1', NULL) |
  4. +-----------------------------------------------+----------------------------+
  5. | 3 | 0 |
  6. +-----------------------------------------------+----------------------------+
  7. 1 row in set (0.00 sec)

ELT

声明

ELT(N, str1, str2, str3,…)

说明

若 N=1,则返回值为 str1;若 N=2,则返回值为 str2;以此类推。若 N 小于 1 或大于参数的数目,则返回值为 NULL。ELT()FIELD() 的补数。

例子

  1. obclient> select elt(3, 'abc1', 'abc2', 'abc', 'abc4', 'abc'), elt(0, 'null1', NULL);
  2. +----------------------------------------------+-----------------------+
  3. | elt(3, 'abc1', 'abc2', 'abc', 'abc4', 'abc') | elt(0, 'null1', NULL) |
  4. +----------------------------------------------+-----------------------+
  5. | abc | NULL |
  6. +----------------------------------------------+-----------------------+
  7. 1 row in set (0.00 sec)

INSERT

声明

INSERT (str1,pos,len,str2)

说明

返回字符串 str1,字符串中起始于 pos 位置,长度为 len 的子字符串将被 str2 取代。如果 pos 超过字符串长度,则返回值为原始字符串。 假如 len 的长度大于其它字符串的长度,则从位置 pos 开始替换。若任何一个参数为 null,则返回值为 NULL。这个函数支持多字节字元。

  • str1str2 必须是字符串,poslen 必须是整数。任意参数为 NULL,结果总为 NULL。

  • str1str2 中的文字符被当做字节流看待。

  • pos 值为负数或者大于 str1 长度时,返回 str1

  • len 小于 0,或大于 str1 的长度时,返回结果为 str1 从开头到 pos 位置的串,和 str2 的组合串。

例子

  1. obclient> select insert('Quadratic',-2,100,'What'), insert('Quadratic',7,3,'What'),
  2. insert('Quadratic',-1,3,'What'), insert('Quadratic',10,3,'What'), insert('Quadratic',5,-1,''),
  3. insert('Quadratic',7,-1,'What')\G;
  4. *************************** 1. row ***************************
  5. insert('Quadratic',-2,100,'What'): Quadratic
  6. insert('Quadratic',7,3,'What'): QuadraWhat
  7. insert('Quadratic',-1,3,'What'): Quadratic
  8. insert('Quadratic',10,3,'What'): Quadratic
  9. insert('Quadratic',5,-1,''): Quad
  10. insert('Quadratic',7,-1,'What'): QuadraWhat
  11. 1 row in set (0.01 sec)

LPAD

声明

LPAD(str, len, padstr)

说明

用指定字符串 padstr,在左侧填充字符串 str 到指定长度 len。如果 str 长度大于 len,则 str 被截断。

例子

  1. obclient> SELECT LPAD('hi',4,'??');
  2. +-------------------+
  3. | LPAD('hi',4,'??') |
  4. +-------------------+
  5. | ??hi |
  6. +-------------------+
  7. 1 row in set (0.01 sec)
  8. obclient> SELECT LPAD('hi',1,'??');
  9. +-------------------+
  10. | LPAD('hi',1,'??') |
  11. +-------------------+
  12. | h |
  13. +-------------------+
  14. 1 row in set (0.00 sec)

RPAD

声明

RPAD(str, len, padstr)

说明

用指定字符串 padstr,在右侧填充字符串 str 到指定长度 len。如果 str 长度大于 len,则 str 被截断。

例子

  1. obclient> SELECT RPAD('hi',4,'??');
  2. +-------------------+
  3. | RPAD('hi',4,'??') |
  4. +-------------------+
  5. | hi?? |
  6. +-------------------+
  7. 1 row in set (0.00 sec)
  8. obclient> SELECT RPAD('hi',1,'??');
  9. +-------------------+
  10. | RPAD('hi',1,'??') |
  11. +-------------------+
  12. | h |
  13. +-------------------+
  14. 1 row in set (0.00 sec)

UUID

声明

uuid()

说明

生成一个全局唯一 ID。

例子

  1. obclient> select uuid();
  2. +--------------------------------------+
  3. | uuid() |
  4. +--------------------------------------+
  5. | f756a1f6-4de6-11e8-90af-90b11c53e421 |
  6. +--------------------------------------+
  7. 1 row in set (0.00 sec)

BIN

声明

bin(N)

说明

返回数字 N 的二进制形式。

例子

  1. obclient> SELECT BIN(12);
  2. +---------+
  3. | BIN(12) |
  4. +---------+
  5. | 1100 |
  6. +---------+
  7. 1 row in set (0.00 sec)

QUOTE

声明

quote(str)

说明

引用一个字符串以产生一个结果可以作为 SQL 语句中正确地转义数据值。返回的字符串由单引号和单引号的各个实例封闭(‘’),反斜线(‘’),ASCII NUL 和 Control-Z 前面加一个反斜杠。如果参数为 NULL,则返回值是词 ‘NULL’ 不包括单引号。

例子

  1. obclient> SELECT QUOTE('Don\'t!');
  2. +------------------+
  3. | QUOTE('Don\'t!') |
  4. +------------------+
  5. | 'Don\'t!' |
  6. +------------------+
  7. 1 row in set (0.00 sec)
  8. obclient> SELECT QUOTE(NULL);
  9. +-------------+
  10. | QUOTE(NULL) |
  11. +-------------+
  12. | NULL |
  13. +-------------+
  14. 1 row in set (0.00 sec)

REGEXP_SUBSTR

声明

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

说明

str 中搜索匹配正则表达式 pattern 的子串,子串不存在返回 NULL。这个函数支持多字节字元。除 match_param 外,其他任意参数为 NULL,结果为 NULL。

  • str 待搜索的字符串,支持多字节字元。

  • pattern 正则表达式,正则表达式规则兼容 MySQL 数据库。

  • position 为搜索的开始位置。必须是大于 0 的正整数,小于等于 0 报错,输入为 NULL 返回 NULL,默认值为 1,表示从第一个字符开始搜索。

  • occurrence 返回第几次匹配的值。必须是大于等于 0 的正整数,小于等于 0 报错,输入为 NULL 返回 NULL,默认值是 1,表示返回第一次匹配的结果。

  • match_param 搜索参数,字符串类型,目前仅支持两个字符 ‘i’,‘c’。i: 代表忽略大小写,c: 代表不忽略,其他字符报错。默认值根据 str 字符集的 collection 决定。 为 NULL 时使用默认值。

  • subexpr 返回正则表达式中第几个组的值。大于等于 0 的整数,小于 0 则报错。默认值是 0,表示返回满足整个 pattern 的子串。

例子

  1. obclient> select regexp_substr('I have 2 apples and 100 bucks!', '[[:blank:]][[:alnum:]]*', 1, 1) from dual;
  2. +----------------------------------------------------------------------------------+
  3. | regexp_substr('I have 2 apples and 100 bucks!', '[[:blank:]][[:alnum:]]*', 1, 1) |
  4. +----------------------------------------------------------------------------------+
  5. | have |
  6. +----------------------------------------------------------------------------------+
  7. 1 row in set (0.00 sec)
  8. obclient> select regexp_substr('foothebar', 'foo(.*)(bar)', 1, 1, 'c', 1) from dual;
  9. +----------------------------------------------------------+
  10. | regexp_substr('foothebar', 'foo(.*)(bar)', 1, 1, 'c', 1) |
  11. +----------------------------------------------------------+
  12. | the |
  13. +----------------------------------------------------------+
  14. 1 row in set (0.01 sec)