函数说明
如果 expr 是 IN 列表中的任一值,它将返回 1,否则返回 0。如果所有的值均是常量,那么所有的值被按照 expr 的类型进行计算和排序。
示例
- 示例 1: expr 不是 IN 列表中的任一值。
gbase> SELECT 2 IN (0,3,5,'8') FROM t;
+------------------+
| 2 IN (0,3,5,'8') |
+------------------+
| 0 |
+------------------+
1 row in set
- 示例 2: expr 是 IN 列表中的值。
gbase> SELECT '1' IN (0,3,5,'1') FROM t;
+--------------------+
| '1' IN (0,3,5,'1') |
+--------------------+
| 1 |
+--------------------+
1 row in set
如果左边的表达式是 NULL,或者在列表中没有发现相匹配的值并且列表中
的一个表达式是 NULL, IN 均返回 NULL。
IN()语法也可以用于子查询类型。
- 示例 3: expr 的值为 NULL。
gbase> SELECT NULL IN (0,3,5,'wefwf') FROM t;
+-------------------------+
| NULL IN (0,3,5,'wefwf') |
+-------------------------+
| NULL |
+-------------------------+
1 row in set
- 示例 4:子查询中包含 IN()函数。
示例中用到的表及数据:
CREATE TABLE sc (sno VARCHAR(4), grade INT);
INSERT INTO sc VALUES ('101',82),('102',59),('103',90),('104',88),('106',82);
查询所有课程都及格的同学的学号。
gbase> SELECT sno FROM sc WHERE grade IN (SELECT grade FROM sc WHERE grade>60) GROUP
BY sno;
+------+
| sno |
+------+
| 103 |
| 101 |
| 104 |
| 106 |
+------+
4 rows in set