欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql字符串函數(shù)詳細匯總

 更新時間:2022年07月26日 10:24:35   作者:公號運維家  
這篇文章主要介紹了mysql字符串函數(shù)詳細匯總,字符串函數(shù)主要用來處理數(shù)據(jù)庫中的字符串數(shù)據(jù),更多相關(guān)內(nèi)容需要的朋友可以參考一下

前言

字符串函數(shù)主要用來處理數(shù)據(jù)庫中的字符串數(shù)據(jù)。??mysql??中的字符串函數(shù)有計算字符串長度函數(shù)、字符串合并函數(shù)、字符串替換函數(shù)、字符串比較函數(shù)、查找指定字符串位置函數(shù)等。

計算字符串字符數(shù)的函數(shù)

??CHAR_LENGTH(str)???函數(shù)計算字符串??str??所包含的字符個數(shù)。一個多字節(jié)字符算作一個單字符。

mysql> select char_length('date'), char_length('yunweijia'), char_length('運維家');
+---------------------+--------------------------+--------------------------+
| char_length('date') | char_length('yunweijia') | char_length('運維家') |
+---------------------+--------------------------+--------------------------+
| 4 | 9 | 3 |
+---------------------+--------------------------+--------------------------+
1 row in set (0.00 sec)

mysql>

計算字符串長度的函數(shù)

??LENGTH(str)???返回值為字符串的字節(jié)長度,使用??utf8??編碼字符集時,一個漢字是三字節(jié),一個數(shù)字或者字母算1字節(jié);

mysql> select length('date'), length('yunweijia'), length('運維家');
+----------------+---------------------+---------------------+
| length('date') | length('yunweijia') | length('運維家') |
+----------------+---------------------+---------------------+
| 4 | 9 | 9 |
+----------------+---------------------+---------------------+
1 row in set (0.00 sec)

mysql>

合并字符串函數(shù)CONCAT(s1,s2,...)、CONCAT_WS(x,s1,s2,...)

??concat(s1,s2,...)??返回結(jié)果為連接參數(shù)產(chǎn)生的字符串,或許有一個或多個參數(shù)。

如果有一個參數(shù)為??null???,則返回值為??null??。

如果所有參數(shù)均為非二進制字符串,則結(jié)果為非二進制字符串。

如果自變量中含有任一二進制字符串,則結(jié)果為一個二進制字符串。

mysql> select concat('mysql 8.0', 'yunweijia'), concat('heihei', null, '666');
+----------------------------------+-------------------------------+
| concat('mysql 8.0', 'yunweijia') | concat('heihei', null, '666') |
+----------------------------------+-------------------------------+
| mysql 8.0yunweijia | NULL |
+----------------------------------+-------------------------------+
1 row in set (0.00 sec)

mysql>

??concat_ws(x,s1,s2,...)???中,??x??是分隔符,分隔符的位置放在要連接的兩個字符串之間。分隔符可以是一個字符串,也可以是其他參數(shù)。

如果分隔符是??null???,則結(jié)果為??null??。該函數(shù)會忽略任何分隔符后面的??null??值。

mysql> select concat_ws('-', 'mysql', '8.0', 'ywj'), concat_ws('@', 'one', null, 'two');
+---------------------------------------+------------------------------------+
| concat_ws('-', 'mysql', '8.0', 'ywj') | concat_ws('@', 'one', null, 'two') |
+---------------------------------------+------------------------------------+
| mysql-8.0-ywj | one@two |
+---------------------------------------+------------------------------------+
1 row in set (0.00 sec)

mysql>

替換字符串的函數(shù)INSERT(s1,x,len,s2)

??insert(s1,x,len,s2)???返回字符串??s1???,其子字符串起始于??x???位置和被字符串??s2???取代的??len???字符。如果??x???超過字符串長度,則返回值為原始字符串。假如??len???的長度大于其他字符串的長度,則從位置??x???開始替換。若任何一個參數(shù)為??null???,則返回值為??null??。

mysql> select insert('yunweijia', 2, 3, 'aaaaaaaa') as coll, insert('yunweijia', -1, 3, 'bbbbbbbb') as coll2, insert('yunweijia', 2, 99, 'ccccccccc') as coll3;
+----------------+-----------+------------+
| coll | coll2 | coll3 |
+----------------+-----------+------------+
| yaaaaaaaaeijia | yunweijia | yccccccccc |
+----------------+-----------+------------+
1 row in set (0.00 sec)

mysql>

第一個函數(shù)??insert('yunweijia', 2, 3, 'aaaaaaaa')???將??yunweijia???第二個字符開始長度為3的字符串,替換成??aaaaaaaa??;

第二個函數(shù)??insert('yunweijia', -1, 3, 'bbbbbbbb')??中由于-1超出了字符串長度,直接返回了原字符串;

第三個函數(shù)??insert('yunweijia', 2, 99, 'ccccccccc')???中由于替換長度99,超出了字符串原本長度,所以從第二個字符開始,截取后面所有的字符,并替換為指定字符??ccccccccc??。

字母大小寫轉(zhuǎn)換函數(shù)

大寫轉(zhuǎn)小寫

??lower(str)???或者??lcase(str)???可以將字符串??str??中的字母字符全部轉(zhuǎn)換成小寫字母。

mysql> select lower('YUNweiJIA'), lcase('YUNweiJIA');
+--------------------+--------------------+
| lower('YUNweiJIA') | lcase('YUNweiJIA') |
+--------------------+--------------------+
| yunweijia | yunweijia |
+--------------------+--------------------+
1 row in set (0.00 sec)

mysql>

小寫轉(zhuǎn)大寫

??upper(str)???或者??ucase(str)???可以將字符串??str??中的字母字符全部轉(zhuǎn)換成大寫字母。

mysql> select upper('yunWEIjia'), ucase('yunWEIjia');
+--------------------+--------------------+
| upper('yunWEIjia') | ucase('yunWEIjia') |
+--------------------+--------------------+
| YUNWEIJIA | YUNWEIJIA |
+--------------------+--------------------+
1 row in set (0.00 sec)

mysql>

獲取指定長度的字符串的函數(shù)LEFT(s,n)和RIGHT(s,n)

??left(s,n)???返回字符串??s???開始的最左邊的??n??個字符。

mysql> select left('yunweijia', 5);
+----------------------+
| left('yunweijia', 5) |
+----------------------+
| yunwe |
+----------------------+
1 row in set (0.00 sec)

mysql>

??right(s,n)???返回字符串??s???開始的最右邊的??n??個字符。

mysql> select right('yunweijia', 5);
+-----------------------+
| right('yunweijia', 5) |
+-----------------------+
| eijia |
+-----------------------+
1 row in set (0.00 sec)

mysql>

填充字符串的函數(shù)LPAD(s1,len,s2)和RPAD(s1,len,s2)

??lpad(s1,len,s2)???返回字符串??s1???,其左邊由字符串??s2???填補到??len??字符長度。假如??s1??的長度大于??len??,則返回值被縮短至??len??字符。

mysql> select lpad('yunweijia', 4, '@#'), lpad('yunweijia', 20, '@#');
+----------------------------+-----------------------------+
| lpad('yunweijia', 4, '@#') | lpad('yunweijia', 20, '@#') |
+----------------------------+-----------------------------+
| yunw | @#@#@#@#@#@yunweijia |
+----------------------------+-----------------------------+
1 row in set (0.00 sec)

mysql>

由于字符串??yunweijia??長度大于4,所以不僅不需要填充,反而需要截取至從左開始4位字符的字符串。

??RPAD(s1,len,s2)???返回字符串??s1???,其右邊被字符串??s2???填補至??len???字符長度。假如字符串??s1???的長度大于??len???,則返回值被縮短到??len??字符長度。

mysql> select rpad('yunweijia', 4, '@#'), rpad('yunweijia', 20, '@#');
+----------------------------+-----------------------------+
| rpad('yunweijia', 4, '@#') | rpad('yunweijia', 20, '@#') |
+----------------------------+-----------------------------+
| yunw | yunweijia@#@#@#@#@#@ |
+----------------------------+-----------------------------+
1 row in set (0.00 sec)

mysql>

由于字符串??yunweijia??長度大于4,所以不僅不需要填充,反而需要截取至從左開始4位字符的字符串。

刪除空格的函數(shù)LTRIM(s)、RTRIM(s)和TRIM(s)

??ltrim(s)???返回字符串??s??,字符串左側(cè)空格字符被刪除;

mysql> select '( yunweijia )', concat('(',ltrim(' yunweijia '),')');
+-----------------+----------------------------------------+
| ( yunweijia ) | concat('(',ltrim(' yunweijia '),')') |
+-----------------+----------------------------------------+
| ( yunweijia ) | (yunweijia ) |
+-----------------+----------------------------------------+
1 row in set (0.00 sec)

mysql>

??rtrim(s)???返回字符串??s??,字符串右側(cè)空格字符被刪除;

mysql> select '( yunweijia )', concat( '(', rtrim(' yunweijia '), ')' );
+-----------------+--------------------------------------------+
| ( yunweijia ) | concat( '(', rtrim(' yunweijia '), ')' ) |
+-----------------+--------------------------------------------+
| ( yunweijia ) | ( yunweijia) |
+-----------------+--------------------------------------------+
1 row in set (0.00 sec)

mysql>

??trim(s)???刪除字符串??s??兩側(cè)的空格;

mysql> select '( yunweijia )', concat( '(', trim(' yunweijia '), ')' );
+-----------------+-------------------------------------------+
| ( yunweijia ) | concat( '(', trim(' yunweijia '), ')' ) |
+-----------------+-------------------------------------------+
| ( yunweijia ) | (yunweijia) |
+-----------------+-------------------------------------------+
1 row in set (0.00 sec)

mysql>

刪除指定字符串的函數(shù)TRIM(s1 FROM s)

??trim(s1 from s)???刪除字符串??s???中兩端所有的子字符串??s1???。??s1??為可選項,在未指定情況下,刪除空格。

mysql> select trim('@#' from '@#@#yunwei@#jia@#@#');
+---------------------------------------+
| trim('@#' from '@#@#yunwei@#jia@#@#') |
+---------------------------------------+
| yunwei@#jia |
+---------------------------------------+
1 row in set (0.00 sec)

mysql>

可以看到,只刪除指定字符串兩邊的內(nèi)容,中間的內(nèi)容并不會進行刪除。

重復生成字符串的函數(shù)REPEAT(s.n)

??repeat(s,n)???返回一個由重復字符串??s???組成的字符串,字符串??s???的數(shù)量等于??n??;

如果??n<=0??,則返回一個空字符串;

如果??s???或者??n???為??null???,則返回??null??。

mysql> select repeat('x', 10), repeat('x', 0), repeat('x', null);
+-----------------+----------------+-------------------+
| repeat('x', 10) | repeat('x', 0) | repeat('x', null) |
+-----------------+----------------+-------------------+
| xxxxxxxxxx | | NULL |
+-----------------+----------------+-------------------+
1 row in set (0.00 sec)

mysql>

空格函數(shù)SPACE(n)

??space(n)???返回一個由??n??個空格組成的字符串。

mysql> select concat('(', space(10), ')');
+-----------------------------+
| concat('(', space(10), ')') |
+-----------------------------+
| ( ) |
+-----------------------------+
1 row in set (0.00 sec)

mysql>

替換函數(shù)REPLACE(s,s1,s2)

??replace(s,s1,s2)???使用字符串??s2???替代字符串??s???中所有的字符串??s1??;

mysql> select replace('yunweijia', 'i', '@#');
+---------------------------------+
| replace('yunweijia', 'i', '@#') |
+---------------------------------+
| yunwe@#j@#a |
+---------------------------------+
1 row in set (0.00 sec)

mysql>

比較字符串大小的函數(shù)strcmp(s1,s2)

??strcmp(s1,s2)??:若所有的字符串均相同,則返回0;

若根據(jù)當前分類次序,第一個參數(shù)小于第二個,則返回-1;

其他情況返回1。

mysql> select strcmp('txt', 'txt'), strcmp('txt', 'txt2'), strcmp('txt2', 'txt');
+----------------------+-----------------------+-----------------------+
| strcmp('txt', 'txt') | strcmp('txt', 'txt2') | strcmp('txt2', 'txt') |
+----------------------+-----------------------+-----------------------+
| 0 | -1 | 1 |
+----------------------+-----------------------+-----------------------+
1 row in set (0.00 sec)

mysql>

獲取子串的函數(shù)SUBSTRING(s,b,len)和MID(s,n,len)

??substring(s,n,len)???帶有??len???參數(shù)的格式,從字符串??s???返回一個長度與??len???字符相同的子字符串,起始于位置??n??。

也可能對??n???使用一個負值。假如這樣,則子字符串的位置起始于字符串結(jié)尾的??n???字符,即倒數(shù)第??n??個字符,而不是字符串的開頭位置。

mysql> select substring('yunweijia', 5, 2) as coll, substring('yunweijia', -3) as coll1, substring('yunweijia', 3) as coss2;
+------+-------+---------+
| coll | coll1 | coss2 |
+------+-------+---------+
| ei | jia | nweijia |
+------+-------+---------+
1 row in set (0.00 sec)

mysql>

匹配子串開始位置的函數(shù)

??locate(str1,str)???、??position(str1 in str)???和??instr(str, str11)???三個函數(shù)的作用相同,返回子字符串??str1???在字符串??str??中的開始位置。

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

mysql>

字符串逆序的函數(shù)REVERSE(s)

??reverse(s)???將字符串??s???反轉(zhuǎn),返回的字符串的順序和??s??字符串順序相反。

mysql> select reverse('yunweijia') as coll, reverse('123456789') as coll1;
+-----------+-----------+
| coll | coll1 |
+-----------+-----------+
| aijiewnuy | 987654321 |
+-----------+-----------+
1 row in set (0.00 sec)

mysql>

返回指定位置的字符串的函數(shù)

??elt(n, str1, str2,...,strn)???:如果??n=1???,則返回值為第一個字符串??str1??;

如果??n=2???,則返回值為第二個字符串??str2??;以此類推。

如果??n<1???或者大于參數(shù)的數(shù)目,則返回值為??null??。

mysql> select elt(1, 'ni1', 'wo1', 'ta') as coll, elt(3, 'ni1', 'wo1', 'ta') as coll_1, elt(0, 'ni1', 'wo1', 'ta') as coll_2, elt(4, 'ni1', 'wo1', 'ta') as coll_3;
+------+--------+--------+--------+
| coll | coll_1 | coll_2 | coll_3 |
+------+--------+--------+--------+
| ni1 | ta | NULL | NULL |
+------+--------+--------+--------+
1 row in set (0.00 sec)

mysql>

返回指定字符串位置的函數(shù)FIELD(s,s1,s2,...,sn)

??field(s,s1,s2,...,sn)???返回字符串??s???在列表??s1,s2,...,sn???中第一次出現(xiàn)的位置,如果找不到??s??,則直接返回0。

如果??s???為??null??,則返回時是0。

mysql> select field('w', 'yun', 'yunwei', 'w', 'yunweijia') as coll, field('x', 'yun', 'yunwei', 'w', 'yunweijia') as coll_1, field(null, 'yun', 'yunwei', 'w', 'yunweijia') as coll_2;
+------+--------+--------+
| coll | coll_1 | coll_2 |
+------+--------+--------+
| 3 | 0 | 0 |
+------+--------+--------+
1 row in set (0.00 sec)

mysql>

返回子串位置的函數(shù)FIND_IN_SET(s1,s2)

??find_in_set(s1,s2)???返回字符串??s1???在字符串列表??s2??中出現(xiàn)的位置,字符串列表是一個有多個逗號分開的字符串組成的列表。

如果??s1???不在??s2???或??s2??為空字符串,則返回值為0;

如果任意一個參數(shù)為??null???,則返回值為??null??。

mysql> select find_in_set('X', 'yun,xwei,Xwei,X,jia');
+-----------------------------------------+
| find_in_set('X', 'yun,xwei,Xwei,X,jia') |
+-----------------------------------------+
| 4 |
+-----------------------------------------+
1 row in set (0.00 sec)

mysql>

選取字符串的函數(shù)MAKE_SET(x,s1,s2,...,sn)

??make_set(x,s1,s2,...,sn)???函數(shù)按??x???的二進制數(shù)從??s1,s2,...,sn??中選取字符串。

mysql> select make_set(5, 'a', 'b', 'c', 'd') as coll, make_set(1|4, 'a', 'b', 'c', 'd') as coll_1, make_set(1|4, 'a', 'b', null, 'c', 'd') as coll_2, make_set(0, 'a', 'b', 'c', 'd') as coll_3;
+------+--------+--------+--------+
| coll | coll_1 | coll_2 | coll_3 |
+------+--------+--------+--------+
| a,c | a,c | a | |
+------+--------+--------+--------+
1 row in set (0.00 sec)

mysql>

5的二進制是??0101???,從右往左的第1位和第3位是1,所以選取??a、c??;

1的二進制是??1???,4的二進制是??100???,進行或操作之后的二進制是??101???,從右往左的第1位和第3位是1,所以選取??a、c??;

由于??null???不參與計算,所以不會添加到結(jié)果中,所以??coll_2???只有??a??。

到此這篇關(guān)于mysql字符串函數(shù)詳細匯總的文章就介紹到這了,更多相關(guān)mysql字符串內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論