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;