MySQL中的单行函数:
sql 中的主要数据类型有: 数值型、字符串型、日期型
接下来,我们研究一下字符串型相关函数
CONCAT
SELECT CONCAT('abc','666','ABC') "details"
FROM DUAL;
备注:以上代码中 'abc' '666' 'ABC'
是要合并的内容,details
是列名。
代码编译结果如下:
----------------------------------------(分割线)---------------------------------
CONCAT_WS
SELECT CONCAT_WS('+++','abs','8958','@@@')
FROM DUAL;
备注: 第一个引号里的内容为连接符,用来连接后面所有引号里的内容。
代码编译结果如下:
----------------------------------------(分割线)---------------------------------
CHAR_LENGTH('')
显示(’’)里内容的字符数
LENGTH('')
显示(’’)里内容所占的字节数(中文字符,每个字占3个字节)
SELECT CHAR_LENGTH('ASDFGHGH'),LENGTH('ASDFGHGH'),CHAR_LENGTH('我是中国人'),LENGTH('我是中国人')
FROM DUAL;
代码编译结果如下:
----------------------------------------(分割线)---------------------------------
INSERT(str, index, len, insert)
str
为被改变的内容,index
为改变的起始位置,len
为被换掉的长度,insert
为塞进去的内容
SELECT INSERT('hello',2,3,'www')
FROM DUAL;
备注:sql 中出现的索引都是从1开始的
代码编译结果如下:
----------------------------------------(分割线)---------------------------------
-
UPPER(sss)
或UCASE(sss)
将字符串sss
的所有字母转成大写字母 -
LOWER(sss)
或LCASE(sss)
将字符串sss
的所有字母转成小写字母 -
LEFT(sss,n)
返回字符串sss
最左边的n个字符 -
RIGHT(sss,n)
返回字符串sss
最右边的n个字符 -
LPAD(str,len,pad)
对str
左边进行填充,直到str
长度为len
个字符
str
为被填充的对象所在的列字段,len
为需要达到的总长度,pad
为填进去的东西(pad
为空时,此功能就是右对齐)
SELECT id ,LPAD(NAME,6,'***')
FROM t_emp;
代码编译结果如下:
注意:
在mysql中,字符串、数值型、日期型变量间存在隐式转换
----------------------------------------(分割线)---------------------------------
RPAD(str,len,pad)
对str
右边进行填充,直到str
长度为len
个字符
str
为被填充的对象所在的列字段,len
为需要达到的总长度,pad
为填进去的东西(pad
为空时,此功能就是左对齐)
SELECT id ,RPAD(NAME,6,'***')
FROM t_emp;
代码编译结果如下:
举例:实现左对齐,代码如下
SELECT id ,RPAD(NAME,10,' ')
FROM t_emp;
代码编译结果如下:
----------------------------------------(分割线)---------------------------------
LTRIM(sss)
去掉字符串sss
左侧的空格RTRIM(sss)
去掉字符串sss
右侧的空格
----------------------------------------(分割线)---------------------------------
TRIM(s)
去掉字符串sss
开始与结尾处的空格
SELECT TRIM(' 123 ')
FROM DUAL;
代码编译结果如下:
----------------------------------------(分割线)---------------------------------
TRIM(s1 FROM S)
去掉字符串s
开始与结尾的s1
TRIM(LEANDING s1 FROM s)
去掉字符串s
开始处的s1
TRIM(TRAILING s1 FROM s)
去掉字符串s
结尾处的s1
REPEAT(str,n)
将str
的内容复制n
次
----------------------------------------(分割线)---------------------------------
REPLACE(str,a,b)
用字符串b
替代字符串str
中出现的字符串a
SELECT REPLACE('helloworld','o','@')
FROM DUAL;
代码编译结果如下:
----------------------------------------(分割线)---------------------------------
STRCMP(s1,s2)
比较字符串s1
和s2
,返回的结果是s1-s2
的值(英文字母中,排序(a,b,c,d,e,f,g…)越靠后,值越大)
SELECT STRCMP('aaa','fff')
FROM DUAL;
代码编译结果如下:
----------------------------------------(分割线)---------------------------------
SUBSTRING(s,index,len)
返回一个从s
字符串的index
处开始,长度为len
的字符串
SELECT SUBSTRING('helloworld','4','3')
FROM DUAL;
代码编译结果如下: