mysql常用字符串操作函数大全,以及实例.

  • 格式:doc
  • 大小:67.50 KB
  • 文档页数:13

下载文档原格式

  / 13
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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)