mysql查询问题,like的反向使用? mysql 判断表大屏查看

发布于:2016年09月24日 已被阅读

mysql 判断表中某个字段里的字符是否在某个字符串里


有没有这样的语句

比如

$str = "你好,今天你吃饭了吗?包子还是油饼啊?包子里边还有点维生素比油饼好";

数据库表t1里存的是 
id name
1  维生素
2  吃饭
3  运动
4  娱乐

用什么语句能匹配到用$str从t1中取到 维生素 和 吃饭 ?


SELECT * FROM t1 WHERE $str  LIKE CONCAT('%',name,'%');



其他典型函数:GROUP_CONCAT

GROUP_CONCAT()是MySQL数据库提供的一个函数,通常跟GROUP BY一起用,具体可参考MySQL官方文挡:http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

语法:

GROUP_CONCAT expr ,expr ...   unsigned_integer | col_name | expr  | ,col_name ... SEPARATOR str_val student_id, GROUP_CONCATcourses_id AS courses  student_courses  student_id=  student_id; 
+ 
| student_id | courses | 
+ 
|  | ,, |
+ 
这 就不需要用php循环了
 = ->;
 = , ;

2.当然分隔符还可以自定义,默认是以“,”作为分隔符,若要改为“|||”,则使用SEPARATOR来指定,例如:

 student_id, GROUP_CONCATcourses_id SEPARATOR  AS courses  student_courses student_id=   student_id;
+ 
| student_id | courses | 
+ 
|  | |||||| |
+ 

3.除此之外,还可以对这个组的值来进行排序再连接成字符串,例如按courses_id降序来排:
 student_id, GROUP_CONCATcourses_id   courses_id DESC AS courses student_courses  student_id=   student_id;
+ 
| student_id | courses | 
+ 
|  |  |
+ 

4.需要注意的:

a.int字段的连接陷阱

当你用group_concat的时候请注意,连接起来的字段如果是int型,一定要转换成char再拼起来,
否则在你执行后(ExecuteScalar或者其它任何执行SQL返回结果的方法)返回的将不是一个逗号隔开的串,
而是byte[]。

该问题当你在SQLyog等一些工具中是体现不出来的,所以很难发现。

select group_concat(ipaddress) from t_ip 返回逗号隔开的串
select group_concat(id) from t_ip 返回byte[]
select group_concat(CAST(id as char)) from t_dep 返回逗号隔开的串
select group_concat(Convert(id , char)) from t_dep 返回逗号隔开的串

附Cast,convert的用法:
CAST(expr AS type), CONVERT(expr,type) , CONVERT(expr USING transcoding_name)
CAST() 和CONVERT() 函数可用来获取一个类型的值,并产生另一个类型的值。

这个类型 可以是以下值其中的 一个:

BINARY[(N)]
CHAR[(N)]
DATE
DATETIME
DECIMAL
SIGNED [INTEGER]
TIME
UNSIGNED [INTEGER]

b.长度陷阱
用了group_concat后,select里如果使用了limit是不起作用的.
用group_concat连接字段的时候是有长度限制的,并不是有多少连多少。但你可以设置一下。

使用group_concat_max_len系统变量,你可以设置允许的最大长度。
程序中进行这项操作的语法如下,其中 val 是一个无符号整数:
SET [SESSION | GLOBAL] group_concat_max_len = val;
若已经设置了最大长度, 则结果被截至这个最大长度。

在SQLyog中执行 SET GLOBAL group_concat_max_len = 10 后,重新打开SQLyog,设置就会生效。



最新发布
linux下svn提交忽略某些文件... (119)
使用批处理来批量更新、提交SVN... (116)
linux查看目录文件大小命令 (117)
linux tar打包压缩排除某个... (114)
Linux tar压缩和解压 (116)
SVN子命令add用法浅析 (111)
热门博文
网友FBI探案:马蓉iPad惊人发现... (43320)
优衣库这个广告拍的很真实,反应人性,... (10110)
霍金携手俄罗斯富豪耗资1亿美元寻找外... (4734)
如何才能查看PHP内置函数源代码... (1196)
微信支付开发当前URL未注册的解决方... (514)
《谁为爱情买单》中的经典面试 ... (414)
精华博文
[推荐]Centos7 安装配置 SVN (117)
easyswoole框架安装 (115)
php开启pecl的支持(推荐) (116)
1-10个恋爱表现:男朋友爱你程度到... (119)
女生喜欢你的10个程度,到第六个就可... (121)
Eclipse 没有Server选项... (153)
友情链接
我来忙 (110)