mysql 字符串处理的一些常见函数
来源:互联网 发布:smt单片机嵌入式培训 编辑:程序博客网 时间:2024/05/10 03:20
Mysql字符串处理函数小结
测试的数据库:
mysql> select * from test_tran; +----+------------------------+ | id | name | +----+------------------------+ | 3 | B,kiki | | 4 | Living,Happing,Working | +----+------------------------+
- UPPER和UCASE
返回字符串str,根据当前字符集映射(缺省是ISO-8859-1 Latin1)把所有的字符改变成大写。该函数对多字节是可靠的。
select upper('name'); +---------------+ | upper('name') | +---------------+ | NAME | +---------------+
列表内容
LOWER和LCASE
返回字符串str,根据当前字符集映射(缺省是ISO-8859-1 Latin1)把所有的字符改变成小写。该函数对多字节是可靠的。FIND_IN_SET(str,strlist)
如果字符串str在由N子串组成的表strlist之中,返回一个1到N的值。一个字符串表是被“,”分隔的子串组成的一个字符
串。如果第一个参数是一个常数字符串并且第二个参数是一种类型为SET的列,FIND_IN_SET()函数被优化而使用位运
算!如果str不是在strlist里面或如果strlist是空字符串,返回0。如果任何一个参数是NULL,返回NULL。如果第一
个参数包含一个“,”,该函数将工作不正常。看面是二种不同的效果,可以看一下添加一条记录,
insert into test_tran value('5','kikiTsao,NBA');
,数据表变为
+----+------------------------+ | id | name | +----+------------------------+ | 3 | B,kiki | | 4 | Living,Happing,Working | | 5 | kikiTsao,NBA | +----+------------------------+
如果我们想要查找带kiki
的数据条数,如果用like模糊查询的话,会出现两条数据。
如果只确定绝对匹配‘kiki’的话,可以使用find_in_set()
字符串处理函数。
mysql> select * from test_tran where find_in_set('kiki',name); +----+--------+ | id | name | +----+--------+ | 3 | B,kiki | +----+--------+ 1 row in set 用模糊查询: mysql> select * from test_tran where name like '%kiki%'; +----+--------------+ | id | name | +----+--------------+ | 3 | B,kiki | | 5 | kikiTsao,NBA | +----+--------------+ 2 rows in set
FIELD(str,str1,str2,str3,...)
返回str在str1, str2, str3, …清单的索引。如果str没找到,返回0。
mysql> select field('a','b','c','a'); +------------------------+ | field('a','b','c','a') | +------------------------+ | 3 | +------------------------+
延伸:用FIELD自定义排序
加入一个字段dept
mysql> select * from test_tran;+----+------------------------+------+| id | name | dept |+----+------------------------+------+| 3 | B,kiki | A || 4 | Living,Happing,Working | A || 5 | kikiTsao,NBA | B || 6 | NBAkikid,KIE | C |+----+------------------------+------+用field自定义新的索引规则:mysql> select * from test_tran order by field(dept,'b','a','c');+----+------------------------+------+| id | name | dept |+----+------------------------+------+| 5 | kikiTsao,NBA | B || 3 | B,kiki | A || 4 | Living,Happing,Working | A || 6 | NBAkikid,KIE | C |+----+------------------------+------+mysql> select field(dept,'b','a','c') from test_tran;+-------------------------+| field(dept,'b','a','c') |+-------------------------+| 2 || 2 || 1 || 3 |+-------------------------+
ELT(N,str1,str2,str3,...)
如果N= 1,返回str1,如果N= 2,返回str2,等等。
如果N小于1或大于参数个数,返回NULL。ELT()是FIELD()反运算。
mysql> select elt(2,'b','c','a'); +--------------------+ | elt(2,'b','c','a') | +--------------------+ | c | +--------------------+
mysql> select id,name,elt(1,id,name,dept) from test_tran; +----+------------------------+---------------------+ | id | name | elt(1,id,name,dept) | +----+------------------------+---------------------+ | 3 | B,kiki | 3 | | 4 | Living,Happing,Working | 4 | | 5 | kikiTsao,NBA | 5 | | 6 | NBAkikid,KIE | 6 | +----+------------------------+---------------------+
REPLACE(str,from_str,to_str)
返回字符串str,其字符串from_str的所有出现由字符串to_str代替。SUBSTRING(str FROM pos)
从字符串str的起始位置pos返回一个子串。mysql数据库的下标是从1开始的。
mysql> select substring('I love you!' from 1 for 4); mysql> select substring('I love you!', 1,4); +---------------------------------------+ | substring('I love you!' from 1 for 4) | +---------------------------------------+ | I lo | +---------------------------------------+ mysql> select substring('I love you!', 0,4); +-------------------------------+ | substring('I love you!', 0,4) | +-------------------------------+ | | +-------------------------------+
SUBSTRING_INDEX(str,delim,count)
返回从字符串str的第count个出现的分隔符delim之后的子串。
如果count是正数,返回最后的分隔符到左边(从左边数) 的所有字符。如果count是负数,
返回最后的分隔符到右边的所有字符(从右边数)。 从左找到第一个为,的位置,并取左侧的字符。
mysql> select substring_index("ni,hao,ma",',',1); +------------------------------------+ | substring_index("ni,hao,ma",',',1) | +------------------------------------+ | ni | +------------------------------------+ 从右找到第一个为,的位置,并取右侧的字符。 mysql> select substring_index("ni,hao,ma",',',-1); +-------------------------------------+ | substring_index("ni,hao,ma",',',-1) | +-------------------------------------+ | ma | +-------------------------------------+
TRIM([[BOTH | LEADING | TRAILING] [remstr] FROM] str)
返回字符串str,其所有remstr前缀或后缀被删除了。
如果没有修饰符BOTH、LEADING或TRAILING给出,BOTH被假定。如果remstr没被指定,空格被删除。
默认是去除空格,制定remstr之后,会去除指定字符。LEADING和TRAILING表示去除字符串前或者的指定字符。
mysql> select trim('a' from 'adegrga'); +--------------------------+ | trim('a' from 'adegrga') | +--------------------------+ | degrg | +--------------------------+ mysql> select trim(leading 'a' from 'adegrga'); +----------------------------------+ | trim(leading 'a' from 'adegrga') | +----------------------------------+ | degrga | +----------------------------------+
- 字符串连接函数
CONCAT/CONCAT_WS/GROUP_CONCAT
是在多字段查询的时候了解了这个函数。
多字段查询:
select 字段 from 表名 where CONCAT(要查询的字段1,字段2) LIKE '%查询字符%';
就可以查到指定字段1和字段2在内的匹配的字段。
CONCAT是直接连接mysql> select concat('fdsaf','fwerwer');+---------------------------+| concat('fdsaf','fwerwer') |+---------------------------+| fdsaffwerwer |+---------------------------+
CONCAT_WS是通过一个分隔符连接mysql> select concat_WS(',','dfd','fere');+-----------------------------+| concat_WS(',','dfd','fere') |+-----------------------------+| dfd,fere |+-----------------------------+
GROUP_CONCAT会通过group by 分组之后,把想要的字段连接起来,用逗号分隔。mysql> select group_concat(name) from base_op group by test_col;+--------------------+| group_concat(name) |+--------------------+| weiwei,fefge || kiki |+--------------------+
自己觉得常用的写在这了,其他请参看博文http://blog.51yip.com/mysql/965.html#
- mysql 字符串处理的一些常见函数
- Python一些常见的字符串处理函数
- MySQL中常见的字符串处理函数
- Mysql常见字符串处理函数
- MySQL字符串处理函数的几种常见用法
- Mysql字符串的处理函数
- 几个常见的字符串处理函数
- PHP常见的字符串处理函数
- JS脚本-字符串处理的常见函数
- python中常见的字符串处理函数
- C语言常见的字符串处理函数
- c语言常见的字符串处理函数
- python常见的字符串处理函数
- mysql 常见处理函数
- 字符串处理的一些常用函数
- 关于SQL字符串处理的一些函数
- 一些常用的T_SQL字符串处理函数
- matlab处理字符串的一些函数
- MyBatis问题总结
- JDBC之数据库基本操作
- 服务器间歇性断网故障解决
- 排序算法之 —— 计数排序法(八)
- HTTP请求响应报文&&相关状态码&&GET_POST请求方法 总结
- mysql 字符串处理的一些常见函数
- SDUT2137数据结构实验之求二叉树后序遍历和层次遍历
- 从零开始移植QT4.8.5之四--交叉编译QT程序并运行在OK6410上
- 10个优化代码的CSS和JavaScript工具
- android-webview无法解析网页中的mjpeg文件的解决办法
- hibernate中数据库表多对一的映射
- GitHub上传出现问题
- CSS3画八卦太极图(绕一个圆旋转)
- javaEE:day7-上传文件(Apache包)、目录打散、文件上传进度条、纯前台进度条