concat(s1,s2,s3) 将字符串s1s2s3 连接到一块;
注意:concat其中一个为null,连接的结果就是为null;
例如:
SELECT * from t_km_doc_edit_pus p where p.KNWLG_NM = CONCAT('知','识','ceshi') ;
等于 SELECT * from t_km_doc_edit_pus p where p.KNWLG_NM = '知识ceshi';
insert(str,x,y,str2) 将字符串str从x开始的 y个字符 替换为 str2; 【起始值是用1开始的】
例如:将knwlg_nm 的 ‘知识ceshi' 的 ’ce' 更新为 ‘测’ 汉字;
语句:update t_km_doc_edit_pus p set p.KNWLG_NM = INSERT(p.KNWLG_NM,3,2,'测') where p.KNWLG_ID ='1901031136500100001';
lower(str) upper(str) 把字符串全部转为大写 或者 小写
例如:执行前 knwlg_nm 为‘ceshiCESHI’;
执行语句后:update t_km_doc_edit_pus p set p.KNWLG_NM = LOWER(p.KNWLG_NM) where p.KNWLG_ID ='1901031136500100001';
upper(str) 同理;
left(str,x) right(str,x) 分别返回字符串最左边的x个字符串,和最右边的x个字符;如果第二个参数x为NULL,那么不返回任何字符串;
例如:一个表中只有账号信息,却没有地市信息;想统计每个地市有多少知识时,可以 根据账号的前缀进行统计;例如:gx1000;gx2000 等账号都归属于广西;所以可以用于这种类型的场景;
语句:SELECT COUNT(1),qianzhui from
(SELECT LEFT(OP_PRSN_ID,2) qianzhui from t_km_doc_edit_pus) t1 GROUP BY qianzhui;
先将 left 截取的结果 作为临时表,然后对临时表进行 分组统计;
lpad(str,n,pad) 和 rpad(str,n,pad) 用字符串pad对str最右边 和 最左边进行填充,直到长度为n个字符长度
例如:对knwlg_nm 为‘知识’的 用‘我真棒’填充 左侧 至30个字符长;
语句:UPDATE t_km_doc_edit_pus p set p.KNWLG_NM = LPAD(p.KNWLG_NM,30,'我真棒') where p.KNWLG_ID ='1901031136500100001';
LTRIM(STR) RTRIM(STR) 去掉字符串str左侧 和 右侧的空格;
例如:将knwlg_nm 右边增加三个空格;
使用查询语句查询:SELECT * from t_km_doc_edit_pus p where p.knwlg_nm = RTRIM('知识 ') union all
SELECT * from t_km_doc_edit_pus p where p.knwlg_nm = '知识 ' union all
SELECT * from t_km_doc_edit_pus p where p.knwlg_nm = '知识'
其实会发现,knwlg_nm 虽然后面有空格,但是 查询时,条件加不加空格 都可以查询出来;可能时mysql 入参之前自己trim了
REPEAT(str,x) 函数:返回str重复x次的结果
例如:SELECT REPEAT('知识',6) ;
SELECT * from t_km_doc_edit_pus p where p.knwlg_nm = REPEAT('知识',6);
replace(str,a,b) 用字符串b替换字符串str中所有出现的字符串a
例如 将knwlg_nm 中的 abc 全部替换为 ‘哈哈哈’;
替换前:
语句:UPDATE t_km_doc_edit_pus p set p.KNWLG_NM = REPLACE(p.KNWLG_NM,'abc','哈哈哈') where p.KNWLG_ID ='1901031136500100001';
strcmp(s1,s2) 比较字符串s1 和 s2 的ascii码值的大小;【如果s1比s2 小返回-1,如果相等返回0,如果s1大于s2 返回1】
例如:SELECT STRCMP('a','b'),STRCMP('b','b'),STRCMP('b','a');
trim(str) 去掉字符串str的前后的空格;
例如:SELECT trim(' a '),' a ';
效果:
substring(str,x,y) 截取字符串str从x位置开始的y位字符;需要注意的是x的值是从1开始的;
例如:SELECT SUBSTR('abcdefg',0, 2) union all
SELECT SUBSTR('abcdefg',1, 2)
效果: