mysql 字元函式小結

myownstars發表於2011-03-18

挑選了一些日常中常用到的字元函式,整理了一下,供大家參考。

 

 

1、 ASCII(str)

返回值為字串str 的最左字元的數值。假如str為空字串,則返回值為 0 。假如str NULL,則返回值為 NULL ASCII()用於帶有從 0255的數值的字元

mysql> select ascii('N');

+------------+

| ascii('N') |

+------------+

|         78 |

+------------+

1 row in set (0.00 sec)

 

mysql> select ascii('NULL');

+---------------+

| ascii('NULL') |

+---------------+

|            78 |

+---------------+

1 row in set (0.00 sec)

 

2、 BIN(N)

返回值為N的二進位制值的字串表示,其中  N 為一個longlong (BIGINT) 數字。這等同於 CONV(N,10,2)。假如N NULL,則返回值為 NULL

 mysql> select bin(2);

+--------+

| bin(2) |

+--------+

| 10     |

+--------+

1 row in set (0.00 sec)

 

mysql> select bin(3);

+--------+

| bin(3) |

+--------+

| 11     |

+--------+

1 row in set (0.00 sec)

 

3、 BIT_LENGTH(str)

返回值為二進位制的字串str 長度

mysql> select bit_length('a');

+-----------------+

| bit_length('a') |

+-----------------+

|               8 |

+-----------------+

1 row in set (0.00 sec)

 

4、 CHAR_LENGTH(str)

返回值為字串str 的長度,長度的單位為字元。一個多位元組字元算作一個單字元。對於一個包含五個二位元組字符集, LENGTH()返回值為 10, CHAR_LENGTH()的返回值為5

mysql> select char_length('abcde');

+----------------------+

| char_length('abcde') |

+----------------------+

|                    5 |

+----------------------+

1 row in set (0.00 sec)

 

5、 CONCAT(str1,str2,...)   

返回結果為連線引數產生的字串。如有任何一個引數為NULL ,則返回值為 NULL。或許有一個或多個引數。 如果所有引數均為非二進位制字串,則結果為非二進位制字串。

如果自變數中含有任一二進位制字串,則結果為一個二進位制字串。一個數字引數被轉化為與之相等的二進位制字串格式;若要避免這種情況,可使用顯式型別 cast, 例如: SELECT CONCAT(CAST(int_col AS CHAR), char_col)

mysql> select concat('My','S','QL');

+-----------------------+

| concat('My','S','QL') |

+-----------------------+

| MySQL                 |

+-----------------------+

1 row in set (0.00 sec)

 

mysql> select concat('My','S',null);

+-----------------------+

| concat('My','S',null) |

+-----------------------+

| NULL                  |

+-----------------------+

1 row in set (0.00 sec)

 

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

CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。   第一個引數是其它引數的分隔符。分隔符的位置放在要連線的兩個字串之間。

分隔符可以是一個字串,也可以是其它引數。如果分隔符為 NULL,則結果為 NULL。函式會忽略任何分隔符引數後的 NULL 值。

mysql> select concat_ws(':','what','are','you'), concat_ws(':','what',null,'you'), concat_ws(null,'what','are','you');

+-----------------------------------+----------------------------------+------------------------------------+

| concat_ws(':','what','are','you') | concat_ws(':','what',null,'you') | concat_ws(null,'what','are','you') |

+-----------------------------------+----------------------------------+------------------------------------+

| what:are:you                      | what:you                         | NULL                               |

+-----------------------------------+----------------------------------+------------------------------------+

1 row in set (0.00 sec)

 

7、 ELT(N,str1,str2,str3,...)

N = 1,則返回值為  str1 ,若N = 2,則返回值為 str2 ,以此類推。若N 小於1或大於引數的數目,則返回值為 NULL ELT()   FIELD()的補數。

mysql> select elt(1,'first','second','three','four'),elt(4,'first','second','three','four');

+----------------------------------------+----------------------------------------+

| elt(1,'first','second','three','four') | elt(4,'first','second','three','four') |

+----------------------------------------+----------------------------------------+

| first                                  | four                                   |

+----------------------------------------+----------------------------------------+

1 row in set (0.00 sec)

 

8、 HEX(N_or_S)

如果N_OR_S 是一個數字,則返回一個十六進位制值 N 的字串表示,在這裡,N 是一個longlong (BIGINT)數。這相當於 CONV(N,10,16)

如果N_OR_S 是一個字串,則返回值為一個N_OR_S的十六進位制字串表示, 其中每個N_OR_S 裡的每個字元被轉化為兩個十六進位制數字。

mysql> select hex(255),hex('abc');

+----------+------------+

| hex(255) | hex('abc') |

+----------+------------+

| FF       | 616263     |

+----------+------------+

1 row in set (0.03 sec)

 

mysql> select 0x616263;

+----------+

| 0x616263 |

+----------+

| abc      |

+----------+

1 row in set (0.00 sec)

 

9、 INSERT(str,pos,len,newstr)

返回字串 str, 其子字串起始於 pos 位置, 長度被字串 newstr取代的len 字元。 

如果pos 超過字串長度,則返回值為原始字串。假如len的長度大於其它字串的長度,則從位置pos開始替換。若任何一個引數為null,則返回值為NULL

mysql> select insert('abcdefgh',2,4,'what'),insert('abcdefgh',2,100,'what'),insert('abcdefgh',-1,4,'what'),insert('abcdefgh',2,null,'what');

+-------------------------------+---------------------------------+--------------------------------+----------------------------------+

| insert('abcdefgh',2,4,'what') | insert('abcdefgh',2,100,'what') | insert('abcdefgh',-1,4,'what') | insert('abcdefgh',2,null,'what') |

+-------------------------------+---------------------------------+--------------------------------+----------------------------------+

| awhatfgh                      | awhat                           | abcdefgh                       | NULL                             |

+-------------------------------+---------------------------------+--------------------------------+----------------------------------+

1    row in set (0.00 sec)

 

10INSTR(str,substr)

返回字串 str 中子字串的第一個出現位置。這和LOCATE()的雙引數形式相同,除非引數的順序被顛倒。

mysql> select instr('abcedefg','ac'),instr('abcedefg','ed');

+------------------------+------------------------+

| instr('abcedefg','ac') | instr('abcedefg','ed') |

+------------------------+------------------------+

|                      0 |                      4 |

+------------------------+------------------------+

1 row in set (0.00 sec)

 

11LEFT(str,len)

返回從字串str 開始的len 最左字元。

mysql> select left('abcedefg',5);

+--------------------+

| left('abcedefg',5) |

+--------------------+

| abced              |

+--------------------+

1 row in set (0.00 sec)

 

12RIGHT(str,len)

從字串str 開始,返回最右len 字元

mysql> select right('abcedefg',5);

+---------------------+

| right('abcedefg',5) |

+---------------------+

| edefg               |

+---------------------+

1 row in set (0.00 sec)

 

13LOAD_FILE(file_name)

讀取檔案並將這一檔案按照字串的格式返回。 檔案的位置必須在伺服器上,你必須為檔案制定路徑全名,而且你還必須擁有FILE 特許權。

檔案必須可讀取,檔案容量必須小於 max_allowed_packet位元組。

mysql> update test set blob_col = load_file('/tmp/picture') where id = 1;

 

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

第一個語法返回字串 str中子字串substr的第一個出現位置。第二個語法返回字串 str中子字串substr的第一個出現位置, 起始位置在pos

如若substr 不在str中,則返回值為0

    mysql> select locate('bar','foobarbar',5),locate('bar','foobarbar');

+-----------------------------+---------------------------+

| locate('bar','foobarbar',5) | locate('bar','foobarbar') |

+-----------------------------+---------------------------+

|                           7 |                         4 |

+-----------------------------+---------------------------+

1 row in set (0.00 sec)

 

15LOWER(str)/ UPPER(str)

    將字串進行大小寫轉換

    mysql> select lower('AbC'),upper('Abc');

+--------------+--------------+

| lower('AbC') | upper('Abc') |

+--------------+--------------+

| abc          | ABC     |

+--------------+--------------+

1 row in set (0.00 sec)

 

17LPAD(str,len,padstr)

返回字串 str, 其左邊由字串padstr 填補到len 字元長度。假如str 的長度大於len, 則返回值被縮短至 len 字元。

mysql> select lpad('hi',4,'?'),lpad('hi',1,'?');

+------------------+------------------+

| lpad('hi',4,'?') | lpad('hi',1,'?') |

+------------------+------------------+

| ??hi             | h                |

+------------------+------------------+

1 row in set (0.00 sec)

 

18RPAD(str,len,padstr)

返回字串str, 其右邊被字串 padstr填補至len 字元長度。假如字串str 的長度大於len,則返回值被縮短到與 len 字元相同長度。

mysql> select rpad('hi',4,'?'),rpad('hi',1,'?');

+------------------+------------------+

| rpad('hi',4,'?') | rpad('hi',1,'?') |

+------------------+------------------+

| hi??             | h                |

+------------------+------------------+

1 row in set (0.03 sec)

 

19LTRIM(str)/ RTRIM(str) 

返回結果字串,並去除左/右側的空格

mysql> select ltrim('   xx  '),rtrim('  xx  ');

+------------------+-----------------+

| ltrim('   xx  ') | rtrim('  xx  ') |

+------------------+-----------------+

| xx               |   xx            |

+------------------+-----------------+

1 row in set (0.01 sec)

 

20QUOTE(str)

引證一個字串,由此產生一個在SQL語句中可用作完全轉義資料值的結果。

返回的字串由單引號標註,每例都帶有單引號 (')、 反斜線符號 (\) ASCII NUL以及前面有反斜線符號的Control-Z 。如果自變數的值為NULL, 則返回不帶單引號的單詞 “NULL”。

mysql> select quote('Don\'t!');

+------------------+

| quote('Don\'t!') |

+------------------+

| 'Don\'t!'        |

+------------------+

1 row in set (0.02 sec)

 

21REPEAT(str,count)

返回一個由重複的字串str 組成的字串,字串str的數目等於count 。若 count <= 0,則返回一個空字串。若str count NULL,則返回 NULL

mysql> select repeat('abc',3),repeat('abc',0),repeat('abc',null);

+-----------------+-----------------+--------------------+

| repeat('abc',3) | repeat('abc',0) | repeat('abc',null) |

+-----------------+-----------------+--------------------+

| abcabcabc       |                 | NULL               |

+-----------------+-----------------+--------------------+

1 row in set (0.00 sec)

 

22REPLACE(str,from_str,to_str)

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

mysql> select replace('abcdea','a','ww');

+----------------------------+

| replace('abcdea','a','ww') |

+----------------------------+

| wwbcdeww                   |

+----------------------------+

1 row in set (0.00 sec)

 

23REVERSE(str)

返回字串 str ,順序和字元順序相反。

mysql> select reverse('abcdef');

+-------------------+

| reverse('abcdef') |

+-------------------+

| fedcba            |

+-------------------+

1 row in set (0.00 sec)

 

24SUBSTRING(str,pos,len)

字串str返回一個長度同len字元相同的子字串,起始於位置 pos

mysql> select substr('abcedfg',2,4),substr('abcedfg',2),substr('abcedfg',-2,4),substr('abcedfg',-2);

+-----------------------+---------------------+------------------------+----------------------+

| substr('abcedfg',2,4) | substr('abcedfg',2) | substr('abcedfg',-2,4) | substr('abcedfg',-2) |

+-----------------------+---------------------+------------------------+----------------------+

| bced                  | bcedfg              | fg                     | fg                   |

+-----------------------+---------------------+------------------------+----------------------+

1 row in set (0.00 sec)

 

 

 

 

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/15480802/viewspace-689884/,如需轉載,請註明出處,否則將追究法律責任。

相關文章