1. 程式人生 > 其它 >MySQL常用的單行函式彙總2——字串函式

MySQL常用的單行函式彙總2——字串函式

字串函式:

1 SELECT ASCII('Abcdfsf'),CHAR_LENGTH('hello'),CHAR_LENGTH('我們'),
2 LENGTH('hello'),LENGTH('我們')
3 FROM DUAL;

ASCII('Abcdef'):獲取對應字串的第一個字元的ASC碼的值   CHAR_LENGTH:獲取字串的長度(將漢字也看做一個字元)   LENGTH:獲取字串的長度(將漢字看作三個字元)

 

1 SELECT CONCAT(emp.last_name,' worked for ',mgr.last_name) "details"

CONCAT('str1','str2','str3'):將str1,str2,str3這三個字串進行相連線(不同字串即為引數,用‘,’隔開,不要用加號)

1 SELECT CONCAT_WS('-','hello','world','hello','beijing')#得到hello-world-hello-beijing
2 FROM DUAL;

CONCAT_WS('str','str1','str2','str3'):將str1,str2,str3這三個字串用str字串進行連線

 

1 #字串的索引是從1開始的!
2 SELECT INSERT('helloworld',2,3,'aaaaa'),REPLACE('hello','lol','mmm')#輸出haaaaaoworld ,  hello
3 FROM DUAL;

INSERT('str1',index,length,'str2'):index1表示從哪裡開始插入,length表示從index開始要替換的長度有多長,str1為準備被替換的字串,str2為要拿去替換的字串

REPLACE('str','str1','str2'):要操作的字串str,str1為在str中去尋找的要替換的字串為str1,如果找到對應的str1則將其替換成str2

 

1 SELECT UPPER('HelLo'),LOWER('HelLo')
2 FROM DUAL;

UPPER:將字串轉換為大寫,LOWER:將字串轉換為小寫

 

1 SELECT LEFT('hello',2),RIGHT('hello',3),RIGHT('hello',13)
2 FROM DUAL;

LEFT('str',length):在str中從左端開始向右取length個字元所得的結果 

RIGHT('str',length):在str中從右端開始向左取length個字元所得的結果

 

1 # LPAD:實現右對齊效果
2 # RPAD:實現左對齊效果
3 SELECT employee_id,last_name,LPAD(salary,10,' ')
4 FROM employees;

LPAD(屬性,length,'char'):要對其的屬性名,對其的字串長度,實現對其所進行的填充欄位(即字串不足length位時用char字元進行填充)

 

1 LTRIM('    h  el  lo   ')

去掉字串中的首尾空格

1 TRIM('oo' FROM 'ooheollo')

去掉ooheollo中的oo子字串

 

1 SELECT REPEAT('hello',4),LENGTH(SPACE(5)),STRCMP('abc','abe')
2 FROM DUAL;

REPEAT('str',times):將字串str重複times次後得到的新字串

STRCMP('str1','str2'):比較str1和str2的asc碼差值,如果差值<0返回-1,=0返回0,>0返回1

 

1 SELECT SUBSTR('hello',2,2),LOCATE('lll','hello')
2 FROM DUAL;

SUBSTR('str',begin,length):獲取str中的子字串,從begin下標開始,長度為length

LOCATE('lll','hello'):尋找字串'lll'在‘hello'中的位置,如果找到則返回第一個字串下標位置,否則返回0

 

1 SELECT ELT(2,'a','b','c','d'),FIELD('mm','gg','jj','mm','dd','mm'),
2 FIND_IN_SET('mm','gg,mm,jj,dd,mm,gg')
3 FROM DUAL;

ELT(index,'s1','s2','s3','s4'):如index = 2,則返回s2的值 

FIELD('str','s1','s2','s3'):尋找str在s1,s2,s3中第一次出現的位置,沒有出現則返回0

FIELD_IN_SET('str','s1,s2,s3'):與FIELD基本類似,只是其將3個字串合成了一個字串,子字串間用逗號隔開

 

1 SELECT employee_id,NULLIF(LENGTH(first_name),LENGTH(last_name)) "compare"#獲取這兩者名字中較長的那個字串的長度
2 FROM employees;