MySQL比较函数:IN() 一个值是否在一组值内

IN():一个值是否在一组值内

 

expr IN (value,...)

返回1(真),如果 expr等于任何的值的IN()列表,否则返回 0(假)。

如果IN()列表中的值不需要类型转换,则它们都是JSON相同类型的非常量, expr可以将它们与每个相同类型的值进行比较(可能在类型转换之后),从而进行优化。列表中的值被排序,并且 expr使用二进制搜索来完成搜索,这使得IN()操作非常快。

 

用法示例:

mysql> SELECT 2 IN (0,3,5,7);
        -> 0
mysql> SELECT 'wefwf' IN ('wee','wefwf','weg');
        -> 1

 

IN() 可以用来比较行构造函数:

mysql> SELECT (3,4) IN ((1,2), (3,4));
        -> 1
mysql> SELECT (3,4) IN ((1,2), (3,5));
        -> 0

 

绝对不要在IN()列表中混合带引号和不带引号的值, 因为带引号(例如字符串)和不带引号的值(例如数字)的比较规则不同。因此,混合类型可能导致不一致的结果。例如,不要写这样的 IN()表达式:

SELECT val1 FROM tbl1 WHERE val1 IN (1,2,'a');

而是这样写:

SELECT val1 FROM tbl1 WHERE val1 IN ('1','2','a');

 

隐式类型转换可能会产生非直观的结果:

mysql> SELECT 'a' IN (0), 0 IN ('b');
        -> 1, 1

 

在这两种情况下,比较值都将转换为浮点值,在每种情况下均得出0.0,比较结果为1(真)。

IN()列表 中值的数量仅受该max_allowed_packet值限制 。

为了符合SQL标准,不仅IN() 返回NULL左侧表达式为NULL,还返回列表中未找到匹配项,并且列表中的一个表达式为时返回NULL。

IN()语法也可以用于编写某些类型的子查询。

    A+
发布日期:2020年08月25日 16:08:36  所属分类:mysql函数
最后更新时间:2020-08-25 16:08:36
评分: (5 票;平均数2.60 ;最高评分 5 ;用户总数5;总得分 13;百分比52.00)
付杰
C++基础入门到进阶视频教程
  • ¥ 498.0元
  • 市场价:498.0元
前端工程化构建工具:Babel7+Webpack4
  • ¥ 15元
  • 市场价:15元
服务器管理面板/主机控制面板“安装”服务
服务器管理面板/主机控制面板“安装”服务
  • ¥ 49.9元
  • 市场价:99.9元
wp dz 帝国 dede phpcms等快速建站服务
wp dz 帝国 dede phpcms等快速建站服务
  • ¥ 999元
  • 市场价:4999元

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: