mysql常用字符串操作函数大全,以及实例.
- 格式:doc
- 大小:67.50 KB
- 文档页数:13
mysql常用字符串操作函数大全,以及实例
今天在论坛中看到一个关于mysql的问题,问题如下
good_id cat_id
12654 665,569
12655 601,4722
goods_id是商品id
cat_id是分类id
当我,怎么根据这种分类ID查数据(一个商品有多个分类,而且用逗号隔开了)
我现在用的是like 这样的话,输入一个分类id是688,或者4722都能出来这个商品,但输入一个722也出来这个商品了。
如果用like做的话,肯定会有问题的,我的开始的想法是,把cat_id里面的字符串换成数组,这样可以利用mysql里面的in操作,这样就不会出现查找722,而4722类别下的产品都跑出来了。我从网上找了半天,这方面的字符串操作函数,没找到,不过我发现了find_in_set这个函数虽然不能,将字符串转换成数组,但是也不会出现上面的情况。我发现自己有好多函数不知道,所以我从手册中,以及网上收集了半天,做了一些例子。
一,测试准备
查看复制打印?
1.测试表
2.CREATE TABLE `string_test` (
3. `id` int(11) NOT NULL auto_increment COMMENT '用户ID',
4. `name` varchar(50) NOT NULL default '' COMMENT '名称',
5. `job` varchar(23) NOT NULL COMMENT '工作',
6. `sex` tinyint(1) NOT NULL default '1' COMMENT '性别',
7. `hobby` varchar(100) character set utf8 collate utf8_unicode_ci default NUL
L COMMENT '爱好',
8. PRIMARY KEY (`id`)
9.) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
10.
11.测试数据
12.INSERT INTO `string_test` (`id`, `name`, `job`, `sex`, `hobby`) VALUES
13.(1, 'tank', '农民工', 1, '军棋,游戏,fishing'),
14.(2, 'zhang', 'DUCK', 0, 'fly,make firend'),
15.(3, 'ying', 'no job', 1, 'flying,driving,testing'),
16.(4, 'tankzhang', 'love your love', 1, 'i love you');
测试表
CREATE TABLE `string_test` (
`id` int(11) NOT NULL auto_increment COMMENT '用户ID',
`name` varchar(50) NOT NULL default '' COMMENT '名称',
`job` varchar(23) NOT NULL COMMENT '工作',
`sex` tinyint(1) NOT NULL default '1' COMMENT '性别',
`hobby` varchar(100) character set utf8 collate utf8_unicode_ci default NULL COMMENT '爱好',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
测试数据
INSERT INTO `string_test` (`id`, `name`, `job`, `sex`, `hobby`) VALUES (1, 'tank', '农民工', 1, '军棋,游戏,fishing'),
(2, 'zhang', 'DUCK', 0, 'fly,make firend'),
二,mysql字符串操作函数
1,UPPER和UCASE
返回字符串str,根据当前字符集映射(缺省是ISO-8859-1 Latin1)把所有的字符改变成大写。该函数对多字节是可靠的。
mysql> select name,UPPER(name) from string_test where name='tank'; +------+-------------+
| name | UPPER(name) |
+------+-------------+
| tank | TANK |
+------+-------------+
1 row in set (0.00 sec)
2,LOWER和LCASE
返回字符串str,根据当前字符集映射(缺省是ISO-8859-1 Latin1)把所有的字符改变成小写。该函数对多字节是可靠的。
mysql> select sex,LCASE(job) from string_test where job='DUCK';
+------+------------+
| sex | LCASE(job) |
+------+------------+
| 1 | duck |
+------+------------+
1 row in set (0.00 sec)
3,FIND_IN_SET(str,strlist)