Mysql 從零開始(五)函式之字串函式

2021-07-09 12:33:32 字數 3847 閱讀 4681

一、計算字串字元數的函式和字元長度的函式

1、char_length(str) 返回字串str 所包含的字元個數。

乙個多位元組字元算作乙個單字元如:char_length('中國') 結果為2.

2、length(str) 返回字串str的位元組長度。

使用utf8編碼時乙個漢字是3個位元組,乙個數字或字母為乙個位元組如:length('中國')結果為6

二、合併字串函式
1、concat(s1,s2,...)返回結果為多個引數連線產生的字串;

a)如果引數中有null,則結果為null;

b)如果引數中有二進位制字串,則結果為二進位制字串。

2、concat_sw(x,s1,s2,...)第乙個引數x是其他字串的分隔符,位置在要連線的字串之間,可以是乙個字串,也可以是其他引數。

a)如果分隔符為null,則結果為null;

b)如果引數為null,結果中會忽略為null的引數。

三、替換字串函式——insert(s1,x,len,s2)
把s1從第x位置起,長度為len的部分替換為s2。

例:select insert('hello',2,2,'what')把hello從第2位開始(序號是從1開始而不是陣列裡面從0)長度為2的部分即'el'替換為'what',所以結果為hwhatlo。

四、字母大小寫轉換函式
lower(str)和lcase(str)把字串中的字母字元全部轉成小寫。

upper(str)和ucase(str)把字串中的字母字元全部轉成大寫。

五、獲取指定長度的字串函式
left(s,n)返回字串開始最左邊的n個字元。如:select left('helloworld',5)結果為hello;

right(s,n)返回字串開始最右邊的n個字元。如:select right('helloworld',5)結果為world。

六、填充字串的函式
lpad(s1,len,s2)在字串s1的左邊填充s2,填充到len長度。如:select lpad('hello',10,'worldpace')結果為worldhello;

rpad(s1,len,s2)在字串s1的左邊填充s2,填充到len長度。如:select rpad('hello',10,'ha')結果為hellohahah。

七、刪除空格的函式
ltrim(s)刪除字串s左側的空格。如:select concat('(',ltrim ('  hello   ') ,')')結果為(hello   );

rtrim(s)刪除字串s右側的空格。如:select concat('(',rtrim (' hello ') ,')')結果為( hello);

trim(s)刪除字串s兩側的空格。如:select concat('(', trim(' hello ') ,')')結果為(hello)。

連線'('和')'是為了讓空格顯示出來。

八、刪除指定字串的函式
trim(s1 from s)刪除字串s兩端所有的子字串s1,s1為可選項,在未指定的情況下刪除空格。如:select trim('xy'from 'xyxboxyxxyxy')結果為xboxyx,兩端的xy都被刪除而中間的並不刪除。
九、重複生成字串的函式——repeat(s,n)
返回乙個由字串s重複n次組成的字串。如果n<=0,則結果為空;如果s或n為null,結果為null。如:select repeat('ha',3)結果為hahaha。
十、空格函式和替換函式
space(n)返回乙個由n個空格組成的字串。如:select concat('(',space(5),')')結果為(     )。

replace(s,s1,s2)使用字串s2,替換字串s中所有的s1。如:select replace('***.baidu.com','x','w')結果為www.baidu.com。

一、比較字串大小的函式 ——strcmp(s1,s2)

如果s1,s2所有字元都相同,結果為0,根據當前分類順序,s1順序在s2之前的話,返回-1,其他結果返回1。如:select strcmp('***','yaa')結果為-1。

二、獲取子字串的函式

substring(s,n,len)若n為正數,則是從字串s的第n位開始(包括第n位)長度為len的字串;

若n為負數,則是從字串尾部開始倒數第n個字元開始長度為len的字串;

若len為空,則是到字串結尾;

若len為負,則結果為null。

如:1、select substring('football',5)結果為ball

2、select substring('football',5,2)結果為ba

3、select substring('football',-4)結果為ball

4、select substring('football',-4,2)結果為ba

mid(s,n,len)用法和作用和substring(s,n,len)完全一樣

三、匹配子串開始位置的函式

locate(str1,str)、position(str1 in str)、instr(str,str1)三個函式作用相同都是返回子串str1在str中的開始位置。

如:1、select locate('hell','hello')

2、select position('hell' in 'hello')

3、select instr('hello','hell')

返回結果都為1,即子串在str中開始的位置。

如果子串在字串中找不到返回結果為0。

四、字串逆序的函式——reverse(s)

把字串s逆序。select reverse('hello')結果為olleh

五、返回指定位置的字串的函式——elt(n,s1,s2,s3,…)

若n為1,返回s1;

若n小於1或者大於引數的個數,則返回null。

如:select elt(3,'a1','b2','c3') 結果為c3

select elt(3,'1a','2b')結果為null

六、返回指定字串位置的函式——field(s,s1,s2,s3,…)

返回字串s在字元列表中第一次出現的位置。

若找不到s則返回結果為0;

若s為null則返回結果為0。

select field('3','1','2','3','3','3')返回結果為3

七、返回子串位置的函式——find_in_set(s1,s2)

返回字串s1,在字串列表中第一次出現的位置。s2是乙個以","分割開的字串列表。    

如果s1不在s2列表中或者s2為空字串返回結果為0;

如果任意乙個引數為null則返回結果為null;

如果s1中含有","則無法得到正確結果。

和field(s,s1,s2,s3,...)作用類似,都可以返回指定字串在字串列表中的位置。

八、選取字串的函式——make_set(x,s1,s2)

返回由x的二進位制指定的相應位置的字串組成的字串,規則是乙個數的二進位製用四位數表示,把這個二進位制倒序排列,和s1,s2...位置對應,對應1的取出,對應0的不要。

select make_set(1,'a','b','c')1的二進位制表示為0001,倒敘排列為1000,s1對應1 所以結果為a

react從零開始 五

1 在本地起服務的時候,官方腳手架預設的是埠是3000,這樣也就意味的如果3000埠被占用,就無法啟動另乙個專案,這時候只需要修改package.json檔案的中的 start set port 4000 react scripts start 增加了set port 埠號 像上面這樣就不會產生衝突...

從零開始學 mysql

以下是我個人見解,不喜勿噴,如有錯誤,還望各路大神多多指教 首先介紹一下資料庫 什麼是資料庫 資料庫 database 是按照資料結構來組織 儲存和管理資料的倉庫。度娘 我的理解 資料庫就是存放資料的地方,可以幫我管理資料的乙個工具 這裡介紹資料庫和分類 什麼是mysql mysql 是一種關係型資...

python從零開始 15 函式之引數

函式的定義方式如下所示,return語句非必需。def fun arg1,args,kwargs if x return x需要重點注意的是引數。引數預設值,在函式定義中,用 男 這種方式申明,如果相關引數在呼叫時,不給值,就自動取預設引數 def print stu inf student,男 c...