转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> MySql >> 正文
mysql中的 IN和FIND_IN_SET的查询问题         ★★★★

mysql中的 IN和FIND_IN_SET的查询问题

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1001 更新时间:2009/4/22 20:49:08
原来以为mysql可以进行这样的查询
select id, list, name from table where ''''daodao'''' IN (list);      (一)
注:1. table含有三个字段id:int,  list:varchar(255),  name:varchar(255)

实际上这样是不行的,这样只有当name是list中的第一个元素时,查询才有效,否则都的不到结果,即使''''daodao''''真的再list中

再来看看这个:
select id, list, name from table where ''''daodao'''' IN (''''libk'''', ''''zyfon'''', ''''daodao'''');    (二)
这样是可以的
---------------------------------------------------------

这两条到底有什么区别呢?为什么第一条不能取得正确的结果,而第二条却能取得结果。

原因其实是(一)中 (list)    list是变量, 而(二)中  (''''libk'''', ''''zyfon'''', ''''daodao'''')是常量

所以如果要让(一)能正确工作,需要用find_in_set():
select id, list, name from table where FIND_IN_SET( ''''daodao'''' , list);  (一)的改进版。


总结:所以如果list是常量,则可以直接用IN, 否则要用FIND_IN_SET()函数






[办公软件]Range结合Find方法的VBA实例  [网络技术]批处理FINDSTR正则表达式查找文件内容的实例
[MySql]在MySQL的启动选项中增加default-character-set=g…  [Sql Server]SQLServer数据库 No ResultSet Set was produced
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台