一. 使用字符串函数
1. 合并字符串函数CONCAT()和CONCAT_WS()
1.1 函数CONCAT()
CONCAT()函数会将传入的参数连接起来返回所合并的字符串类型数据。如果其中一个参数为NULL,则返回值为NULL。
SELECT CONCAT(‘My‘,‘S‘,‘QL‘) 合并后字符串;
SELECT CONCAT(CURDATE(),12.34) 合并后字符串;
SELECT CONCAT(‘My‘,‘S‘,‘QL‘,NULL) 合并后字符串;
1.2 函数CONCAT_WS()
CONCAT_WS(SEP,S1,S2,…SN)函数与CONCAT()相比,多了一个表示分割符的SEP参数,即不仅将传入的其他参数连接起来,而且还会通过分割符将各个字符串分割开。分隔符可以是一个字符串,也可以是其他参数。如果分隔符为NULL,则返回结果为NULL。函数会忽略任何分隔符参数后的NULL值。
SELECT CONCAT_WS(‘-‘,‘029‘,88461234) 合并后字符串
执行SQL函数CONCAT_WS(),当分割符参数的值为NULL时,具体SQL语句如下:
SELECT CONCAT_WS(NULL,‘029‘,88461234) 合并后字符串;
执行结果显示,当所传入的第一个参数值为NULL,返回的结果值将为NULL,因此返回结果为NULL。
执行SQL函数CONCAT_WS(),当分割符参数后值存在NULL时,具体SQL语句如下:
SELECT CONCAT_WS(‘-‘,‘029‘,NULL,88461234) 合并后字符串;
执行结果显示,当所传入的参数(除第一个参数外)值中有NULL,返回的结果值将忽略NULL,因此返回结果为029-88461234。
2. 比较字符串大小函数STRCMP()
STRCMP(str1,str2)函数用来比较字符串参数str1和str2,如果参数str1大于str2,则返回结果1;如果参数str1小于str2,则返回结果-1;如果参数str1等于str2,则返回结果0。
SELECT STRCMP(‘abc‘,‘abd‘), STRCMP(‘abc‘,‘abc‘), STRCMP(‘abc‘,‘abb‘);
3. 获取字符串长度函数LENGTH()和字符数函数CHAR_LENGTH()
通过函数LENGTH()和CHAR_LENGTH()获取字符串的长度。LENGTH(str)函数会获取传人的参数str的长度,CHAR_LENGTH(str)函数会获取传人的参数str的字符串。
3.1 函数LENGTH()
SELECT ‘MySQL‘ 英文字符串,LENGTH(‘MySQL‘) 字符串字符长度,‘常建功‘ 中文字符串,LENGTH(‘常建功‘) 字符串字符长度
由于一个英文字符占一个字节,所以字符串‘MySQL‘的长度为5,由于一个汉字字符占3个字符(有的书说是2个),所以字符串‘常建功‘的长度为6。
3.2 函数CHAR_LENGTH()
SELECT ‘MySQL‘ 英文字符串,CHAR_LENGTH(‘MySQL‘) 字符串字符长度,‘常建功‘ 中文字符串,CHAR_LENGTH(‘常建功‘) 字符串字符长度
字符串‘MySQL‘共有5个字符,但是占有6个字节空间。这是因为每个字符串都会以\0结束,结束符\0也会占用一个字节空间。
4. 实现字母大小写转换函数UPPER()和字符数函数LOWER()
4.1 函数UPPER()和UCASE()函数会将字符串中的所有字母转换成大写字母。
SELECT ‘mysql‘ 字符串,UPPER(‘mysql‘) 转换后字符串,UCASE(‘mysql‘) 转换后字符串;
4.2 函数LOWER()和LCASE()函数会将字符串中的所有字母转换成小写字母。
SELECT ‘MYSQL‘ 字符串,LOWER(‘MYSQL‘) 转换后字符串,LCASE(‘MYSQL‘) 转换后字符串;
5. 查找字符串
5.1 返回字符串位置的函数FIND_IN_SET() 。
通过函数FIND_IN_SET(str1,str2)获取相匹配字符串的位置,该函数会返回在字符串str2中与str1相匹配的字符串的位置,参数str2字符串中将包含若干个用逗号隔开的字符串。
SELECT FIND_IN_SET(‘MySQL‘,‘orcle,sql server,MySQL‘) 位置;
5.2 返回指定字符串位置的函数FIELD()
通过函数FIELD(str,str1,str2…) 获取相匹配字符串的位置。该函数将会返回第一个与字符串str匹配的字符串的位置。
SELECT FIELD(‘MySQL‘,‘orcle‘,‘sql server‘,‘MySQL‘) 位置;
5.3 返回子字符串相匹配的开始位置
可以通过三个函数获取子字符串相匹配的开始位置,它们分别为函数LOCATE()、POSITION()和INSTR()。
LOCATE(str1,str) 函数将会返回参数str中字符串str1的开始位置。其他两个函数定义如下:POSITION(str1 IN str) INSTR(str,str1)。
SELECT LOCATE(‘SQL‘,‘MySQL‘) 位置, POSITION(‘SQL‘ IN ‘MySQL‘) 位置, INSTR(‘MySQL‘,‘SQL‘) 位置;
5.4 返回指定位置的字符串的函数ELT()
通过函数ELT(n,str1,str2…)获取指定位置的字符串,该函数将会返回第n个字符串。
SELECT ELT(1,‘MySQL‘,‘orcle‘,‘sql server‘) 第1个位置的字符串;
5.5 选择字符串的函数MAKE_SET()
可以通过函数MAKE_SET(num,str1,str2…strn)获取字符串,该函数首先会将数值num转换成二进制数,然后按照二进制数从参数str1,str2,……,strn中选取相应的字符串。在通过二进制数来选择字符串时,会从右到左的顺序读取该值,如果值为1值选择该字符串,否则将不选择该字符串。
SELECT BIN(5) 二进制数,MAKE_SET(5,‘MySQL‘,‘Oracle‘,‘SQL Server‘,‘PostgreSQL‘) 选取后的字符串, BIN(7) 二进制数,MAKE_SET(7,‘MySQL‘,‘Oracle‘,‘SQL Server‘,‘PostgreSQL‘) 选取后的字符串;
6. 从现有字符串中截取子字符串
在MySQL中提供了丰富的函数去实现截取子字符串功能,分别为函数LEFT()、函数RIGHT()、函数SUBSTRING()和函数MID()。
6.1 从左边或右边截取子字符串
LEFT(str,num):返回字符串str中的包含前num个字母(从左边数)的字符串。
RIGHT(str,num):返回字符串str中的包含后num个字母(从右边数)的字符串。
SELECT ‘MySQL‘ 字符串,LEFT(‘MySQL‘,2) 前两个字符,RIGHT(‘MySQL‘,3) 后三个字符;
6.2 截取指定位置和长度子字符串
SUBSTRING(str,num,len):返回字符串str中的第num个位置开始长度为len的子字符串。
MID(str,num,len)
SELECT ‘oraclemysql‘ 字符串,SUBSTRING(‘oraclemysql‘,7,5) 截取子字符串,MID(‘oraclemysql‘,7,5) 截取子字符串;
7. 去除字符串的首尾空格
在MySQL中提供了丰富函数去实现去除字符串空格功能,分别为函数LTRIM()、函数RTRIM()和函数TRIM()。LTRIM(str)去除字符串开始处空格,RTRIM(str)去除字符串结束处空格,TRIM(str)去除字符串首尾空格。
SELECT CONCAT(‘-‘,‘ MySQL‘,‘-‘) 原来字符串,CHAR_LENGTH(CONCAT(‘-‘,‘ MySQL‘,‘-‘)) 原来字符串长度, CONCAT(‘-‘,LTRIM(‘ MySQL‘),‘-‘) 处理后字符串,CHAR_LENGTH(CONCAT(‘-‘,LTRIM(‘ MySQL‘),‘-‘)) 处理后字符串串长度
8. 替换字符串
8.1 使用INSERT()函数
INSERT(str,pos,len,newstr):该函数会将字符串str中的pos位置开始长度为len的字符串用字符串ewstr来替换。如果参数pos的值超过字符串长度,则返回值为原始字符串str。如果len的长度大于原来字符串(str)中所剩字符串的长度,则从位置pos开始进行全部替换。若任何一个参数为NULL,则返回值为NULL。
SELECT ‘这是MySQL数据库管理系统‘ 字符串, INSERT(‘这是MySQL数据库管理系统‘,3,5,‘Oracle‘) 转换后字符串;
执行SQL函数INSERT(),当替换的起始位置大于字符串长度,具体SQL语句如下:
SELECT ‘这是MySQL数据库管理系统‘ 字符串, CHAR_LENGTH(‘这是MySQL数据库管理系统‘) 字符串字符数, INSERT(‘这是MySQL数据库管理系统‘,16,15,‘Oracle‘) 转换后字符串;
执行SQL函数INSERT(),当所要替换的长度大于原来字符串中所剩字符串的长度,则从起始位置开始进行全部替换,具体SQL语句如下:
SELECT ‘这是MySQL数据库管理系统‘ 字符串,CHAR_LENGTH(‘MySQL数据库管理系统‘) 剩余字符数, INSERT(‘这是MySQL数据库管理系统‘,3,15,‘Oracle‘) 转换后字符串;
8.2 使用REPLACE()函数
REPLACE(str,substr,newstr)):该函数会将字符串str中的子字符串substr用字符串newstr来替换。
SELECT ‘这是MySQL数据库管理系统‘ 原字符串, REPLACE(‘这是MySQL数据库管理系统‘,‘MySQL‘,‘Oracle‘) 替换后字符串;
二. 使用数值函数
一. 使用日期函数
一. 使用系统信息函数