OceanBase 字符串函數(shù)

2021-06-30 14:00 更新

CONCAT

聲明

CONCAT(str1, .., strN)

說明

把多個(gè)字符串連接成一個(gè)字符串。參數(shù)中包含 NULL 時(shí),返回 NULL

例子

obclient> SELECT
     CONCAT('test','obclient', '1.0'),
     CONCAT('test','obclient', NULL)
     \G
*************************** 1. row ***************************
CONCAT('test','obclient', '1.0'): testobclient1.0
 CONCAT('test','obclient', NULL): NULL
1 row in set (0.01 sec)

CONCAT_WS

聲明

CONCAT_WS(separator, str1, .., strN)

說明

把多個(gè)字符串連接成一個(gè)字符串,相鄰字符串間使用 separator 分隔。參數(shù)中包含 NULL 時(shí),將忽略 NULL

例子

obclient> SELECT
     CONCAT_WS('_', 'First', 'Second'),
     CONCAT_WS('_', 'First', NULL, 'Second')
     \G
*************************** 1. row ***************************
      CONCAT_WS('_', 'First', 'Second'): First_Second
CONCAT_WS('_', 'First', NULL, 'Second'): First_Second
1 row in set (0.00 sec)

FORMAT

聲明

FORMAT(X,D)

說明

把數(shù)字 X 格式化為“#,###,###.##”格式,四舍五入到 D 位小數(shù),并以字符串形式返回結(jié)果(如果整數(shù)部分超過三位,會(huì)用“,”作為千分位分隔符)。如果 D 為 0,則結(jié)果沒有小數(shù)點(diǎn)或小數(shù)部分。

例子

obclient> SELECT FORMAT(12332.123456, 4) from DUAL;
+-------------------------+
| format(12332.123456, 4) |
+-------------------------+
| 12,332.1235             |
+-------------------------+
1 row in set (0.00 sec)

obclient> SELECT FORMAT(12332.1, 4) from DUAL;
+--------------------+
| format(12332.1, 4) |
+--------------------+
| 12,332.1000        |
+--------------------+
1 row in set (0.01 sec)

obclient> SELECT FORMAT(12332.2, 0) from DUAL;
+--------------------+
| format(12332.2, 0) |
+--------------------+
| 12,332             |
+--------------------+
1 row in set (0.00 sec)

SUBSTR

聲明

SUBSTR(str, pos)
SUBSTR(str, pos, len)
SUBSTR(str FROM pos)         
SUBSTR(str FROM pos FOR len)

說明

返回 str 的子字符串,起始位置為 pos,長度為 len。參數(shù)中包含 NULL 時(shí),返回 NULL。

  • 不指定 len 時(shí),返回的子字符串從 pos 位置開始到 str 結(jié)尾。

  • pos 值為負(fù)數(shù)時(shí),從 str 尾部向頭部倒序確定起始位置。

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

例子

obclient> SELECT
     SUBSTR('abcdefg', 3),
     SUBSTR('abcdefg', 3, 2),
     SUBSTR('abcdefg', -3),
     SUBSTR('abcdefg', 3, -2),
     SUBSTR('abcdefg' from -4 for 2)
     \G
*************************** 1. row ***************************
           SUBSTR('abcdefg', 3): cdefg
        SUBSTR('abcdefg', 3, 2): cd
          SUBSTR('abcdefg', -3): efg
       SUBSTR('abcdefg', 3, -2):
SUBSTR('abcdefg' from -4 for 2): de
1 row in set (0.01 sec)

SUBSTRING

聲明

SUBSTRING(str, pos)  
SUBSTRING(str, pos, len)         
SUBSTRING(str FROM pos)      
SUBSTRING(str FROM pos FOR len)

說明

同 SUBSTR。

TRIM

聲明

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

說明

刪除字符串所有前綴和/或后綴,默認(rèn)為 BOTH。參數(shù)中包含 NULL 時(shí),返回 NULL。

例子

obclient> SELECT
     TRIM(' bar '),
     TRIM(LEADING 'x' FROM 'xxxbarxxx'),
     TRIM(BOTH 'x' FROM 'xxxbarxxx'),
     TRIM(TRAILING 'x' FROM 'xxxbarxxx')
     \G
*************************** 1. row ***************************
                      TRIM(' bar '): bar
 TRIM(LEADING 'x' FROM 'xxxbarxxx'): barxxx
    TRIM(BOTH 'x' FROM 'xxxbarxxx'): bar
TRIM(TRAILING 'x' FROM 'xxxbarxxx'): xxxbar
1 row in set (0.01 sec)

LTRIM

聲明

LTRIM(str)

說明

刪除字符串左側(cè)的空格。

RTRIM

聲明

RTRIM(str)

說明

刪除字符串右側(cè)的空格。

ASCII

聲明

ASCII(str)

說明

返回字符串最左側(cè)字符的 ASCII 碼。

ORD

聲明

ORD(str)

說明

返回字符串最左側(cè)字符的字符碼。單字節(jié)編碼如果最左側(cè)字符是多字節(jié)編碼字符,返回值計(jì)算規(guī)則如下:

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

例子

obclient> SELECT ORD('中國');
+---------------+
| ORD('中國') |
+---------------+
|      14989485 |
+---------------+
1 row in set (0.01 sec)

LENGTH

聲明

LENGTH(str)

說明

返回 str 的字節(jié)長度。

例子

obclient> SELECT LENGTH('中國'), LENGTH('hello');
+------------------+-----------------+
| LENGTH('中國') | LENGTH('hello') |
+------------------+-----------------+
|                6 |               5 |
+------------------+-----------------+
1 row in set (0.01 sec)

CHAR_LENGTH

聲明

CHAR_LENGTH(str)

說明

返回字符串包含的字符數(shù)。

例子

obclient> SELECT CHAR_LENGTH('中國'), CHAR_LENGTH('hello');
+-----------------------+----------------------+
| CHAR_LENGTH('中國') | CHAR_LENGTH('hello') |
+-----------------------+----------------------+
|                     2 |                    5 |
+-----------------------+----------------------+
1 row in set (0.00 sec)

UPPER

聲明

UPPER(str)

說明

將字符串中的小寫字母轉(zhuǎn)化為大寫字母。

例子

obclient> obclient> SELECT UPPER('obclient您好!');
+----------------------------+
| UPPER('obclient您好!')    |
+----------------------------+
| OBCLIENT您好!             |
+----------------------------+
1 row in set (0.00 sec)

LOWER

聲明

LOWER(str)

說明

將字符串中的大寫字母轉(zhuǎn)化為小寫字母。

例子

obclient> SELECT LOWER('obclient您好!');
+-----------------------------+
| LOWER('obclient您好!') |
+-----------------------------+
| obclient您好!          |
+-----------------------------+
1 row in set (0.01 sec)

HEX

聲明

HEX(str)

說明

將數(shù)字或字符串轉(zhuǎn)化為十六進(jìn)制字符串。

例子

obclient> SELECT HEX(255), HEX('abc');
+----------+------------+
| HEX(255) | HEX('abc') |
+----------+------------+
| FF       | 616263     |
+----------+------------+
1 row in set (0.00 sec)

UNHEX

聲明

UNHEX(str)

說明

將十六進(jìn)制字符串轉(zhuǎn)化為正常字符串。

例子

obclient> SELECT UNHEX('4f6365616e42617365');
+-----------------------------+
| UNHEX('4f6365616e42617365') |
+-----------------------------+
| OceanBase                   |
+-----------------------------+
1 row in set (0.01 sec)

MD5

聲明

MD5(str)

說明

返回字符串的 MD5 值。

例子

obclient> SELECT MD5(1);
+----------------------------------+
| MD5(1)                           |
+----------------------------------+
| c4ca4238a0b923820dcc509a6f75849b |
+----------------------------------+
1 row in set (0.00 sec)

INT2IP

聲明

INT2IP(int_value)

說明

將整數(shù)內(nèi)碼轉(zhuǎn)換成 IP 地址。

例子

obclient> SELECT
     INT2IP(16777216),
     HEX(16777216),
     INT2IP(1)
     \G
*************************** 1. row ***************************
INT2IP(16777216): 1.0.0.0
   HEX(16777216): 1000000
       INT2IP(1): 0.0.0.1
1 row in set (0.01 sec)

IP2INT

聲明

IP2INT('ip_addr')

說明

將 IP 地址轉(zhuǎn)換成整數(shù)內(nèi)碼。

例子

obclient> SELECT
     IP2INT('0.0.0.1'),
     HEX(IP2INT('0.0.0.1')),
     HEX(IP2INT('1.0.0.0'))
     \G
*************************** 1. row ***************************
     IP2INT('0.0.0.1'): 1
HEX(IP2INT('0.0.0.1')): 1
HEX(IP2INT('1.0.0.0')): 1000000
1 row in set (0.01 sec)

LIKE

聲明

str1 [NOT] LIKE str2 [ESCAPE str3]

說明

字符串通配符匹配。參數(shù)中包含 NULL 時(shí),返回 NULL

通配符包括:

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

  • _:匹配單個(gè)字符。

ESCAPE 用于定義轉(zhuǎn)義符,如果 str2 中包含 str3,在匹配時(shí) str3 后的字符將做為普通字符處理。

例子

obclient> SELECT 'ab%' LIKE 'abc%' ESCAPE 'c';
+------------------------------+
| 'ab%' LIKE 'abc%' ESCAPE 'c' |
+------------------------------+
|                            1 |
+------------------------------+
1 row in set (0.01 sec)

REGEXP

聲明

str [NOT] REGEXP | RLIKE pat

說明

正則匹配。參數(shù)中包含 NULL 時(shí),返回 NULL

例子

obclient> SELECT
     1234 REGEXP 1,
     'hello' RLIKE 'h%'
     \G
*************************** 1. row ***************************
     1234 REGEXP 1: 1
'hello' RLIKE 'h%': 0
1 row in set (0.01 sec)

REPEAT

聲明

REPEAT(str, count)

說明

返回 str 重復(fù) count 次組成的字符串。count 小于等于 0 時(shí),返回空字符串。參數(shù)中包含 NULL 時(shí),返回 NULL。

例子

obclient> SELECT
     REPEAT('1', -1),
     REPEAT(null, null),
     REPEAT('Abc', 4)
     \G
*************************** 1. row ***************************
   REPEAT('1', -1):
REPEAT(null, null): NULL
  REPEAT('Abc', 4): AbcAbcAbcAbc
1 row in set (0.01 sec)

SPACE

聲明

SPACE(N)

說明

返回包含 N 個(gè)空格的字符串。

SUBSTRING_INDEX

聲明

SUBSTRING_INDEX(str, delim, count)

說明

在定界符 delim 以及 count 出現(xiàn)前,從字符串 str 返回字符串。若 count 為正值,則返回最終定界符(從左邊開始)左邊的一切內(nèi)容。若 count 為負(fù)值,則返回定界符(從右邊開始)右邊的一切內(nèi)容。任意一個(gè)參數(shù)為 NULL,返回 NULL;若 str 或 delim 為空字符串,則返回空串;若 count = 0, 返回空串。

strdelimcount 參數(shù)支持?jǐn)?shù)值與字符串的隱式轉(zhuǎn)換。

例子

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;
*************************** 1. row ***************************
 substring_index('abcdabc', 'abc', 0):
 substring_index('abcdabc', 'abc', 1):
 substring_index('abcdabc', 'abc', 2): abcd
 substring_index('abcdabc', 'abc', 3): abcdabc
substring_index('abcdabc', 'abc', -1):
substring_index('abcdabc', 'abc', -2): dabc
substring_index('abcdabc', 'abc', -3): abcdabc
1 row in set (0.00 sec)

LOCATE

聲明

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

說明

第一個(gè)語法返回字符串 str 中子字符串 substr 的第一個(gè)出現(xiàn)位置。第二個(gè)語法返回字符串 str 中子字符串 substr 的第一個(gè)出現(xiàn)位置, 起始位置在 pos。如若 substr 不在 str 中,則返回值為 0。

例子

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

POSITION

聲明

POSITION(substr IN str)

說明

與 LOCATE 同義。

INSTR

聲明

INSTR(str,substr)

說明

返回字符串 str 中子字符串的第一個(gè)出現(xiàn)位置。這和 LOCATE() 的雙參數(shù)形式相同,除非參數(shù)的順序被顛倒。

例子

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

REPLACE

聲明

REPLACE(str, from_str, to_str)

說明

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

例子

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

FIELD

聲明

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

說明

返回參數(shù) str 在 str1str2str3,… 列表中的索引位置(從 1 開始的位置)。在找不到 str 的情況下,返回值為 0。

如果所有的對于 FIELD() 的參數(shù)均為字符串,則所有參數(shù)均按照字符串進(jìn)行比較。如果所有的參數(shù)均為數(shù)字,則按照數(shù)字進(jìn)行比較。否則,參數(shù)均按照 double 類型進(jìn)行比較。

如果 str 為 NULL,則返回值為 0,原因是 NULL 不能同任何值進(jìn)行同等比較。FILED() 是 ELT() 的補(bǔ)數(shù)。

例子

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

ELT

聲明

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

說明

若 N=1,則返回值為 str1;若 N=2,則返回值為 str2;以此類推。若 N 小于 1 或大于參數(shù)的數(shù)目,則返回值為 NULL。ELT() 是 FIELD() 的補(bǔ)數(shù)。

例子

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

INSERT

聲明

INSERT (str1,pos,len,str2)

說明

返回字符串 str1,字符串中起始于 pos 位置,長度為 len 的子字符串將被 str2 取代。如果 pos 超過字符串長度,則返回值為原始字符串。 假如 len 的長度大于其它字符串的長度,則從位置 pos 開始替換。若任何一個(gè)參數(shù)為 null,則返回值為 NULL。這個(gè)函數(shù)支持多字節(jié)字元。

  • str1 和 str2 必須是字符串,pos 和 len 必須是整數(shù)。任意參數(shù)為 NULL,結(jié)果總為 NULL。
  • str1 和 str2 中的文字符被當(dāng)做字節(jié)流看待。
  • pos 值為負(fù)數(shù)或者大于 str1 長度時(shí),返回 str1。
  • 當(dāng) len 小于 0,或大于 str1 的長度時(shí),返回結(jié)果為 str1 從開頭到 pos 位置的串,和 str2 的組合串。

例子

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

LPAD

聲明

LPAD(str, len, padstr)

說明

用指定字符串 padstr,在左側(cè)填充字符串 str 到指定長度 len。如果 str 長度大于 len,則 str 被截?cái)唷?/p>

例子

obclient> SELECT LPAD('hi',4,'??');
+-------------------+
| LPAD('hi',4,'??') |
+-------------------+
| ??hi              |
+-------------------+
1 row in set (0.01 sec)

obclient> SELECT LPAD('hi',1,'??');
+-------------------+
| LPAD('hi',1,'??') |
+-------------------+
| h                 |
+-------------------+
1 row in set (0.00 sec)

RPAD

聲明

RPAD(str, len, padstr)

說明

用指定字符串 padstr,在右側(cè)填充字符串 str 到指定長度 len。如果 str 長度大于 len,則 str 被截?cái)唷?/p>

例子

obclient> SELECT RPAD('hi',4,'??');
+-------------------+
| RPAD('hi',4,'??') |
+-------------------+
| hi??              |
+-------------------+
1 row in set (0.00 sec)

obclient> SELECT RPAD('hi',1,'??');
+-------------------+
| RPAD('hi',1,'??') |
+-------------------+
| h                 |
+-------------------+
1 row in set (0.00 sec)

UUID

聲明

uuid()

說明

生成一個(gè)全局唯一 ID。

例子

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

BIN

聲明

bin(N)

說明

返回?cái)?shù)字 N 的二進(jìn)制形式。

例子

obclient> SELECT BIN(12);
+---------+
| BIN(12) |
+---------+
| 1100    |
+---------+
1 row in set (0.00 sec)

QUOTE

聲明

quote(str)

說明

引用一個(gè)字符串以產(chǎn)生一個(gè)結(jié)果可以作為 SQL 語句中正確地轉(zhuǎn)義數(shù)據(jù)值。返回的字符串由單引號(hào)和單引號(hào)的各個(gè)實(shí)例封閉(''),反斜線(''),ASCII NUL 和 Control-Z 前面加一個(gè)反斜杠。如果參數(shù)為 NULL,則返回值是詞 'NULL' 不包括單引號(hào)。

例子

obclient> SELECT QUOTE('Don\'t!');
+------------------+
| QUOTE('Don\'t!') |
+------------------+
| 'Don\'t!'        |
+------------------+
1 row in set (0.00 sec)

obclient> SELECT QUOTE(NULL);
+-------------+
| QUOTE(NULL) |
+-------------+
| NULL        |
+-------------+
1 row in set (0.00 sec)

REGEXP_SUBSTR

聲明

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

說明

在 str 中搜索匹配正則表達(dá)式 pattern 的子串,子串不存在返回 NULL。這個(gè)函數(shù)支持多字節(jié)字元。除 match_param 外,其他任意參數(shù)為 NULL,結(jié)果為 NULL。

  • str 待搜索的字符串,支持多字節(jié)字元。

  • pattern 正則表達(dá)式,正則表達(dá)式規(guī)則兼容 MySQL 數(shù)據(jù)庫。

  • position 為搜索的開始位置。必須是大于 0 的正整數(shù),小于等于 0 報(bào)錯(cuò),輸入為 NULL 返回 NULL,默認(rèn)值為 1,表示從第一個(gè)字符開始搜索。

  • occurrence 返回第幾次匹配的值。必須是大于等于 0 的正整數(shù),小于等于 0 報(bào)錯(cuò),輸入為 NULL 返回 NULL,默認(rèn)值是 1,表示返回第一次匹配的結(jié)果。

  • match_param 搜索參數(shù),字符串類型,目前僅支持兩個(gè)字符 ‘i’,‘c’。i: 代表忽略大小寫,c: 代表不忽略,其他字符報(bào)錯(cuò)。默認(rèn)值根據(jù) str 字符集的 collection 決定。 為 NULL 時(shí)使用默認(rèn)值。

  • subexpr 返回正則表達(dá)式中第幾個(gè)組的值。大于等于 0 的整數(shù),小于 0 則報(bào)錯(cuò)。默認(rèn)值是 0,表示返回滿足整個(gè) pattern 的子串。

例子

obclient> select regexp_substr('I have 2 apples and 100 bucks!', '[[:blank:]][[:alnum:]]*', 1, 1) from dual;
+----------------------------------------------------------------------------------+
| regexp_substr('I have 2 apples and 100 bucks!', '[[:blank:]][[:alnum:]]*', 1, 1) |
+----------------------------------------------------------------------------------+
|  have                                                                            |
+----------------------------------------------------------------------------------+
1 row in set (0.00 sec)

obclient> select regexp_substr('foothebar', 'foo(.*)(bar)', 1, 1, 'c', 1) from dual;
+----------------------------------------------------------+
| regexp_substr('foothebar', 'foo(.*)(bar)', 1, 1, 'c', 1) |
+----------------------------------------------------------+
| the                                                      |
+----------------------------------------------------------+
1 row in set (0.01 sec)


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)