MySQL-字符串处理函数

发表于 MySQL 分类,标签: MySQL
-- 1、CHAR_LENGTH(exp1,exp2) 返回值为字符创的长度,长度的单位为字符,一个汉字也是一个字符。
SELECT CHAR_LENGTH('vince_小白');
SELECT ren_name,CHAR_LENGTH(ren_name) FROM test_table;

-- 2、FORMAT(X,D) 将数字X以四舍五入的方式保留小数点后D位,并将结果以字符创的形式返回。
--  D为0,则返回结果不带小数点,或者不含小数部分。
SELECT FORMAT(1231321.564564,4);
SELECT FORMAT(1231321.564564,5);
SELECT FORMAT(1231321.564564,0);
SELECT FORMAT(1231321.464564,0);


-- 3.insert(str,pos,len,newstr);字符替换,
-- str是原字串,pos起始位置,len替换长度,新的字串
SELECT INSERT('xiaobai is a dog',14,3,'cat');
SELECT INSERT('xiaobai is a dog',14,100,'cat');

-- 4.INSTR(str.substr)返回第一个出现的位置
SELECT INSTR('foobarbar','bar');

-- 5.LEFT/RIGHT   字符串截取,左边几个,右边几个
-- left(str,len)返回从字符串str开始的len最左字符。
SELECT LEFT('foobarbar',5);

-- right(str,len)返回从字符串str开始的len最左字符。
SELECT RIGHT('foobarbar',5);

-- 6.length(srt)返回字符串长度,单位是字节
-- 在mysql里面utf8,一个汉字是3个字节(还要进一步了解)
SELECT LENGTH('vice_小白');


-- 7.LTRIM/RTRIM/TRIM 去空格
SELECT LTRIM('     kjdkfkj   34');
SELECT RTRIM('     kjdkfkj        ');

-- trim(both|leading|trailing "remstr可选指定字符" from 'xxxxxxxxxxzxkldjfkcxxxxxxxxxxxxxxxxxx')
SELECT TRIM(BOTH FROM '    kldjfk    ');
SELECT TRIM(LEADING FROM '    kldjfk    ');
SELECT TRIM(LEADING ' ' FROM '    kldjfk    ');
SELECT TRIM(LEADING 'x' FROM 'xxxxxxxxxxzxkldjfkcxxxxxxxxxxxxxxxxxx');
SELECT TRIM(TRAILING 'x' FROM 'xxxxxxxxxxzxkldjfkcxxxxxxxxxxxxxxxxxx');
SELECT TRIM(BOTH 'x' FROM 'xxxxxxxxxxzxkldjfkcxxxxxxxxxxxxxxxxxx');


-- 8.STRCMP(exp1,exp2)字符串比较
-- 相同返回0,前面小返回-1,前面大返回1
SELECT STRCMP('text','text');
SELECT STRCMP('tex','text');
SELECT STRCMP('text1','text');


-- 9.concat(str1,str2)
-- 返回结果为连接参数产生的字符串。如有任何一个参数为空,则返回为空。
-- 或许有一个或多个参数。如果所有参数均为非二进制字符串,则结果为非二进制字符串。
-- 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。
-- 一个数字参数被转化为与之相等的二进制字符串搁置;若有避免种种情况,可以使用显示类型cast,
SELECT CONCAT(CAST(int_col AS CHAR),char_col);
SELECT CONCAT('My','S','Q','L');
SELECT CONCAT('My','S',NULL,'L');
SELECT CONCAT('My','S','Q','L',1);  --  系统自动把int 1转换成字符串了
SELECT CONCAT('My','S','Q','L',CAST(1));
SELECT CONCAT(CAST(123 AS CHAR),'My','S','Q','L');-- cast将int转换为字符串



-- substring不带len参数的格式从字符串str返回一个子字符串,起始于位置pos。
-- 带有len参数的格式从字符串str返回一个长度同len字符相同的子字符串,起始于位置pos
-- 使用from的格式为标准的SQL语法。也可能对pos使用一个负值。
-- 假若这样,则子字符串的位置起始于字符串结尾的pos字符,
-- 而不是字符串的开头位置。在一下格式的函数中可以对pos使用一个负值。
-- substring(str,pos);
-- substring(str,from pos);
SUBSTRING(str,pos,len);
SUBSTRING(str FROM pos FOR len);
SELECT SUBSTRING('xiaobai32',4);  -- 从第四个字符串开始截取
SELECT SUBSTRING('xiaobai' FROM 4); --  从第1个字符串开始,截取4个长度。
SELECT SUBSTRING('xiaobai',1,4); --  从第1个字符串开始,截取4个长度。
SELECT SUBSTRING('xiaobai' FROM 1 FOR 4); --  从第1个字符串开始,截取4个长度。
SELECT SUBSTRING('xiaobai',-3);  --  从倒数第3个开始截取
SELECT SUBSTRING('xiaobai',-5,3);  -- 从倒数第五个开始截取3个长度。
SELECT SUBSTRING('xiaobai' FROM -4 FOR 2);  -- 从倒数第4个开始截取2个长度


0 篇评论

发表我的评论