<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
字串函數主要用來處理資料庫中的字串資料。mysql
中的字串函數有計算字串長度函數、字串合併函數、字串替換函數、字串比較函數、查詢指定字串位置函數等。
CHAR_LENGTH(str)
函數計算字串str
所包含的字元個數。一個多位元組字元算作一個單字元。
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>
LENGTH(str)
返回值為字串的位元組長度,使用utf8
編碼字元集時,一個漢字是三位元組,一個數位或者字母算1位元組;
mysql> select length('date'), length('yunweijia'), length('運維家'); +----------------+---------------------+---------------------+ | length('date') | length('yunweijia') | length('運維家') | +----------------+---------------------+---------------------+ | 4 | 9 | 9 | +----------------+---------------------+---------------------+ 1 row in set (0.00 sec) mysql>
concat(s1,s2,...)
返回結果為連線引數產生的字串,或許有一個或多個引數。
如果有一個引數為null
,則返回值為null
。
如果所有引數均為非二進位制字串,則結果為非二進位制字串。
如果自變數中含有任一二進位制字串,則結果為一個二進位制字串。
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
是分隔符,分隔符的位置放在要連線的兩個字串之間。分隔符可以是一個字串,也可以是其他引數。
如果分隔符是null
,則結果為null
。該函數會忽略任何分隔符後面的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>
insert(s1,x,len,s2)
返回字串s1
,其子字串起始於x
位置和被字串s2
取代的len
字元。如果x
超過字串長度,則返回值為原始字串。假如len
的長度大於其他字串的長度,則從位置x
開始替換。若任何一個引數為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>
第一個函數insert('yunweijia', 2, 3, 'aaaaaaaa')
將yunweijia
第二個字元開始長度為3的字串,替換成aaaaaaaa
;
第二個函數insert('yunweijia', -1, 3, 'bbbbbbbb')
中由於-1超出了字串長度,直接返回了原字串;
第三個函數insert('yunweijia', 2, 99, 'ccccccccc')
中由於替換長度99,超出了字串原本長度,所以從第二個字元開始,擷取後面所有的字元,並替換為指定字元ccccccccc
。
lower(str)
或者lcase(str)
可以將字串str
中的字母字元全部轉換成小寫字母。
mysql> select lower('YUNweiJIA'), lcase('YUNweiJIA'); +--------------------+--------------------+ | lower('YUNweiJIA') | lcase('YUNweiJIA') | +--------------------+--------------------+ | yunweijia | yunweijia | +--------------------+--------------------+ 1 row in set (0.00 sec) mysql>
upper(str)
或者ucase(str)
可以將字串str
中的字母字元全部轉換成大寫字母。
mysql> select upper('yunWEIjia'), ucase('yunWEIjia'); +--------------------+--------------------+ | upper('yunWEIjia') | ucase('yunWEIjia') | +--------------------+--------------------+ | YUNWEIJIA | YUNWEIJIA | +--------------------+--------------------+ 1 row in set (0.00 sec) mysql>
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>
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位元字元的字串。
ltrim(s)
返回字串s
,字串左側空格字元被刪除;
mysql> select '( yunweijia )', concat('(',ltrim(' yunweijia '),')'); +-----------------+----------------------------------------+ | ( yunweijia ) | concat('(',ltrim(' yunweijia '),')') | +-----------------+----------------------------------------+ | ( yunweijia ) | (yunweijia ) | +-----------------+----------------------------------------+ 1 row in set (0.00 sec) mysql>
rtrim(s)
返回字串s
,字串右側空格字元被刪除;
mysql> select '( yunweijia )', concat( '(', rtrim(' yunweijia '), ')' ); +-----------------+--------------------------------------------+ | ( yunweijia ) | concat( '(', rtrim(' yunweijia '), ')' ) | +-----------------+--------------------------------------------+ | ( yunweijia ) | ( yunweijia) | +-----------------+--------------------------------------------+ 1 row in set (0.00 sec) mysql>
trim(s)
刪除字串s
兩側的空格;
mysql> select '( yunweijia )', concat( '(', trim(' yunweijia '), ')' ); +-----------------+-------------------------------------------+ | ( yunweijia ) | concat( '(', trim(' yunweijia '), ')' ) | +-----------------+-------------------------------------------+ | ( yunweijia ) | (yunweijia) | +-----------------+-------------------------------------------+ 1 row in set (0.00 sec) mysql>
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>
可以看到,只刪除指定字串兩邊的內容,中間的內容並不會進行刪除。
repeat(s,n)
返回一個由重複字串s
組成的字串,字串s
的數量等於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>
space(n)
返回一個由n
個空格組成的字串。
mysql> select concat('(', space(10), ')'); +-----------------------------+ | concat('(', space(10), ')') | +-----------------------------+ | ( ) | +-----------------------------+ 1 row in set (0.00 sec) mysql>
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>
strcmp(s1,s2)
:若所有的字串均相同,則返回0;
若根據當前分類次序,第一個引數小於第二個,則返回-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>
substring(s,n,len)
帶有len
引數的格式,從字串s
返回一個長度與len
字元相同的子字串,起始於位置n
。
也可能對n
使用一個負值。假如這樣,則子字串的位置起始於字串結尾的n
字元,即倒數第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>
locate(str1,str)
、position(str1 in str)
和instr(str, str11)
三個函數的作用相同,返回子字串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>
reverse(s)
將字串s
反轉,返回的字串的順序和s
字串順序相反。
mysql> select reverse('yunweijia') as coll, reverse('123456789') as coll1; +-----------+-----------+ | coll | coll1 | +-----------+-----------+ | aijiewnuy | 987654321 | +-----------+-----------+ 1 row in set (0.00 sec) mysql>
elt(n, str1, str2,...,strn)
:如果n=1
,則返回值為第一個字串str1
;
如果n=2
,則返回值為第二個字串str2
;以此類推。
如果n<1
或者大於引數的數目,則返回值為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>
field(s,s1,s2,...,sn)
返回字串s
在列表s1,s2,...,sn
中第一次出現的位置,如果找不到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>
find_in_set(s1,s2)
返回字串s1
在字串列表s2
中出現的位置,字串列表是一個有多個逗號分開的字串組成的列表。
如果s1
不在s2
或s2
為空字串,則返回值為0;
如果任意一個引數為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>
make_set(x,s1,s2,...,sn)
函數按x
的二進位制數從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
不參與計算,所以不會新增到結果中,所以coll_2
只有a
。
到此這篇關於mysql字串函數詳細彙總的文章就介紹到這了,更多相關mysql字串內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45