首頁 > 軟體

mysql查詢字串函數的使用

2022-08-29 14:04:38

mysql查詢字串函數

一、根據字串找位置

  • find_in_set

第二個引數是以逗號隔開的,從第二個引數集合中查詢第一個引數的位置

mysql> select find_in_set('mysql','oracle,sql server,mysql,db2');
+----------------------------------------------------+
| find_in_set('mysql','oracle,sql server,mysql,db2') |
+----------------------------------------------------+
|                                                  3 |
+----------------------------------------------------+
1 row in set (0.00 sec)
  • field
mysql> help field
Name: 'FIELD'
Description:
Syntax:
FIELD(str,str1,str2,str3,...)
Returns the index (position) of str in the str1, str2, str3, ... list.
Returns 0 if str is not found.
If all arguments to FIELD() are strings, all arguments are compared as
strings. If all arguments are numbers, they are compared as numbers.
Otherwise, the arguments are compared as double.
If str is NULL, the return value is 0 because NULL fails equality
comparison with any value. FIELD() is the complement of ELT().
URL: http://dev.mysql.com/doc/refman/5.5/en/string-functions.html
Examples:
mysql> SELECT FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo');
        -> 2
mysql> SELECT FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo');
        -> 0

上面兩個函數都是全匹配,如下三個函數是子字串匹配。

locate(str1,str)
position(str1 in str)
instr(str,str1)

這三個函數都是返回引數str中字串str1的開始位置,注意locate和instr引數的順序

mysql> select locate('sql','mysql') locate ,position('sql' in 'mysql') position ,instr('mysql','sql') instr;
+--------+----------+-------+
| locate | position | instr |
+--------+----------+-------+
|      3 |        3 |     3 |
+--------+----------+-------+
1 row in set (0.00 sec)

二、根據位置找字串

  • elt(n,str1,str2,…)

elt函數返回指定位置的字串,專案上如果有這個需求的話,直接使用這個函數還是挺便利的。

mysql> select elt(2,'huang','bao','kang');
+-----------------------------+
| elt(2,'huang','bao','kang') |
+-----------------------------+
| bao                         |
+-----------------------------+
1 row in set (0.00 sec)
  • make_set

相對於elt函數,elt函數只能選擇一個具體位置的元素,而make_set則更強大,將換算二進位制之後為條件進行選擇。1為選擇,0不選擇。

mysql> select bin(5),make_set(5,'huang','bao','kang','Love you!');
+--------+----------------------------------------------+
| bin(5) | make_set(5,'huang','bao','kang','Love you!') |
+--------+----------------------------------------------+
| 101    | huang,kang                                   |
+--------+----------------------------------------------+
1 row in set (0.00 sec)

mysql常用十種字串函數

1.CONCAT()

CONCAT(str1,str2,…))函數用於返回多個字串連線之後的字串,例如:

SELECT CONCAT('MySQL', '字串', '函數') AS str;str      

   

輸出

MySQL字串函數

如果該函數中的任何引數為 NULL,返回結果為 NULL。例如:

SELECT CONCAT('MySQL', NULL, '函數') AS str;
str
|---+   |

對於字串常數,我們也可直接將它們連寫在一起。例如:

SELECT 'MySQL' '字串' '函數' AS str;
str           
|--------------+MySQL字串函數|

以上方式只能用於連線字串常數,不能用於連線欄位的值。


IT145.com E-mail:sddin#qq.com