编程语言中常用函数来处理一些字符串,数字或者其余内容。MySQL
也是同样,可使用函数来快速达到一系列的目的。html
在上一篇文章《计算字段的使用》中,咱们提早使用了一个trim
函数,来处理字符串两端的空格。而这篇文章就是专门讲解一些实际工做中经常使用函数。sql
原文连接:https://weiya.me/item/67.html编程
MySQL
支持如下经常使用函数:编程语言
文本处理函数函数
数值数据处理函数post
日期时间处理函数spa
MySQL
一些特殊信息,好比版本信息函数postgresql
本篇文章主要介绍:文本处理函数,通常用于处理字符串,好比删除、填充、转换大小写等等操做code
提示: SQL
语句具备较强的可移植性。好比在Mysql
中使用的SQL
语句,搬到postgresql
中使用起来问题也不大。可是,在SQL
语句中使用的函数可移植性较差,实现相同功能的函数在不一样DBMS
中可能彻底不同。因此若是须要移植SQL
要慎重使用函数。htm
首先咱们先创建一个数据表,同时填入一些数据,下面咱们将使用此表
-- ---------------------------- -- Table structure for fun_text -- ---------------------------- DROP TABLE IF EXISTS `fun_text`; CREATE TABLE `fun_text` ( `id` int(11) NOT NULL AUTO_INCREMENT, `content` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; -- ---------------------------- -- Records of fun_text -- ---------------------------- INSERT INTO `fun_text` VALUES ('1', '1234567890'); INSERT INTO `fun_text` VALUES ('2', 'abc'); INSERT INTO `fun_text` VALUES ('3', 'ABC'); INSERT INTO `fun_text` VALUES ('4', ' abc '); INSERT INTO `fun_text` VALUES ('5', 'lee');
下面咱们直接列举一些经常使用MySQL
字符串处理函数,及其用法实例
用于返回字符串左侧的字符。
该函数有两个参数,第一个参数为字符串,第二个参数为字符串长度。字符串长度为2,就从字符串的左侧截取两个字符串返回。
SELECT id,LEFT(content,3) AS left_content FROM fun_text WHERE id='1'
咱们从上表中返回了id=1
的记录的content
字段的左侧3个字符
TIP: 该函数还有类似函数RIGHT()
用于返回字符串右侧的字符,用法相似。
这个函数很简单,返回字符串的长度。
SELECT id,LENGTH(content) AS content_length FROM fun_text WHERE id='1'
咱们返回了id=1
的记录的content
长度为10
返回一个字符串在另外一个字符串中第一次出现的位置,若是没有发现就返回0
.
SELECT id,LOCATE('234', content) AS locate_content FROM fun_text WHERE id='1';
以前id=1
的content
字段内容为1234567890
,234
的起始位置为2
. 因此,若是在开始位置查找到,那么返回是1
而不是0
将字符串所有转换为小写字母
咱们使用id=3
的记录来操做。
SELECT id,LOWER(content) AS lower_content FROM fun_text WHERE id='3';
能够看到,以前的大写ABC
被转换成了小写的字母abc
TIP: 该函数还有一个相反函数UPPER()
能够将小写字母均转换为大写字母
去除字符串两边的空格。
此次使用id=4
的记录做为演示,content
字段两边包含了空格。
SELECT id,TRIM(content) AS trim_content FROM fun_text WHERE id='4';
能够看到,字符串两边的空格都被去除了。
TIP: 还有另外两个类似函数:一、LTRIM()
:去除字符串左侧空格;二、RTRIM()
去除字符串右侧空格
字符串截取函数。该函数与LEFT()
和RIGHT()
函数有点儿相似,均可以截取字符串,只不过功能更增强大。
一、从第N
个字符串开始截取
SELECT id,SUBSTRING(content,5) AS sub_content FROM fun_text WHERE id='1';
咱们使用id=1
记录,截取content
字段,而且是从第5
个字符串开始截取,因此结果为567890
二、从第N
个字符串开始截取,截取M
个字符
SELECT id,SUBSTRING(content,5,2) AS sub_content FROM fun_text WHERE id='1';
这个方法去截取字符串是否是有更多的自由
最后说一个不一样于以前的字符处理函数SOUNDEX()
,这个函数能够将一个单词的读音转换成与它类似的读音的单词。简单的来讲,就是讲方言转换为普通话的意思。这个在搜索中十分的好使。
咱们拿上面的id=5
的记录来举个例子,记录的content
值为lee
,可是有个方言用户输入了lie
,不管是模糊查询仍是精确查询都是没法匹配到lee
结果,可是使用了soundex
函数则能够改变这些。
SELECT * FROM fun_text WHERE SOUNDEX(content) = SOUNDEX('lie');
观察上面的例子,lie
是不等于lee
的,可是SOUNDEX(content) = SOUNDEX('lie')
,由于lie
和lee
的读音十分类似。