Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql枚举未搜索没有引号值的记录_Mysql_Sql - Fatal编程技术网

Mysql枚举未搜索没有引号值的记录

Mysql枚举未搜索没有引号值的记录,mysql,sql,Mysql,Sql,我有一个带有enum enum('0','1','2','3','4','5','6')的表字段 在查询中,当我尝试在(1)中使用时,它不起作用,但当我在(“1”)中使用时,它起作用 如果我在(1,2)中使用,它是有效的 因此,当“in”子句中有一个值时,它应该可以在不使用引号的情况下工作。您可以将值用作字符串或整数,函数支持这两种类型 IN运算符允许您在WHERE子句中指定多个值 通常,IN()函数用于多个值,但它也支持单个值。对我来说,所有的查询都有效 SELECT * FROM `your

我有一个带有enum enum('0','1','2','3','4','5','6')的表字段

在查询中,当我尝试在(1)中使用时,它不起作用,但当我在(“1”)中使用时,它起作用

如果我在(1,2)中使用,它是有效的


因此,当“in”子句中有一个值时,它应该可以在不使用引号的情况下工作。

您可以将值用作字符串或整数,函数支持这两种类型

IN运算符允许您在WHERE子句中指定多个值

通常,
IN()
函数用于多个值,但它也支持单个值。对我来说,所有的查询都有效

SELECT * FROM `your_table` WHERE `id` IN('4') // String Number
SELECT * FROM `your_table` WHERE `id` IN('4','2','1') // String Multiple Number
SELECT * FROM `your_table` WHERE `id` IN(1) // Single Integer
SELECT * FROM `your_table` WHERE `id` IN(1,2,4) // Multiple Integer

可以将值用作字符串或整数,函数支持这两种类型

IN运算符允许您在WHERE子句中指定多个值

通常,
IN()
函数用于多个值,但它也支持单个值。对我来说,所有的查询都有效

SELECT * FROM `your_table` WHERE `id` IN('4') // String Number
SELECT * FROM `your_table` WHERE `id` IN('4','2','1') // String Multiple Number
SELECT * FROM `your_table` WHERE `id` IN(1) // Single Integer
SELECT * FROM `your_table` WHERE `id` IN(1,2,4) // Multiple Integer
链接-


链接-

枚举值被定义并存储为字符串。可以通过字符串值或数字索引值(从1开始,而不是0)访问它们

枚举值从“0”开始,其数值索引值为1。因此,可以使用IN(1,2)从查询中获取一些数据,但这些数字将被视为索引,并且您将实际获取针对枚举值为“2”和“3”的记录返回的数据(可能不是您认为要获取的数据)

(1)中的
不起作用,因为没有索引值为1的数据(emum值='0') ('1')中的
确实有效,因为您确实有枚举值为“1”的数据

试一下这个例子


或者阅读有关处理

中枚举文字的部分。枚举值定义并存储为字符串。可以通过字符串值或数字索引值(从1开始,而不是0)访问它们

枚举值从“0”开始,其数值索引值为1。因此,可以使用IN(1,2)从查询中获取一些数据,但这些数字将被视为索引,并且您将实际获取针对枚举值为“2”和“3”的记录返回的数据(可能不是您认为要获取的数据)

(1)中的
不起作用,因为没有索引值为1的数据(emum值='0') ('1')中的
确实有效,因为您确实有枚举值为“1”的数据

试一下这个例子


或者阅读

枚举
支持通过数值索引或直接引用的值访问值中有关枚举文本处理的部分

根据:

。。。强烈建议不要将数字用作枚举值,
因为它不会通过适当的TINYINT或SMALLINT类型节省存储空间,
而且很容易混淆字符串和基础数值
(可能不同)如果引用的枚举值不正确

如果确实使用数字作为枚举值,请始终将其括在引号中。
如果省略引号,则该数字被视为索引

示例

mysql> drop table if exists so_q48786040;
mysql> CREATE TABLE so_q48786040(e ENUM('6', '5', '4', '3', '2', '1', '0'));
mysql> INSERT INTO so_q48786040 VALUES( 2 ), ( 4 ), ( 7 ), ( '6' );
Query OK, 4 rows affected (0.05 sec)
Records: 4  Duplicates: 0  Warnings: 0
选择所有行,返回值5,3,0,6

mysql> SELECT * FROM so_q48786040;
+------+
| e    |
+------+
| 5    |
| 3    |
| 0    |
| 6    |
+------+
4 rows in set (0.00 sec)
在特定指标上选择。结果将按照定义的枚举索引的顺序排列

mysql> SELECT * FROM so_q48786040 WHERE e IN( 7, 4 );
+------+
| e    |
+------+
| 3    | -- <--- at index 4
| 0    | -- <--- at index 7
+------+
2 rows in set (0.00 sec)
mysql> SELECT * FROM so_q48786040 WHERE e IN( '6', '3', '0' );
+------+
| e    |
+------+
| 3    |
| 0    |
| 6    |
+------+
3 rows in set (0.00 sec)
选择不存在的条目。返回空集,因为未插入“4”

mysql> SELECT * FROM so_q48786040 WHERE e IN( '4' );
Empty set (0.00 sec)
注意

mysql> drop table if exists so_q48786040;
mysql> CREATE TABLE so_q48786040(e ENUM('6', '5', '4', '3', '2', '1', '0'));
mysql> INSERT INTO so_q48786040 VALUES( 2 ), ( 4 ), ( 7 ), ( '6' );
Query OK, 4 rows affected (0.05 sec)
Records: 4  Duplicates: 0  Warnings: 0
  • 建议在索引0处定义空文本
  • NULL
    值的索引为
    NULL

enum
支持通过数值索引或直接引用的值访问值

根据:

。。。强烈建议不要将数字用作枚举值,
因为它不会通过适当的TINYINT或SMALLINT类型节省存储空间,
而且很容易混淆字符串和基础数值
(可能不同)如果引用的枚举值不正确

如果确实使用数字作为枚举值,请始终将其括在引号中。
如果省略引号,则该数字被视为索引

示例

mysql> drop table if exists so_q48786040;
mysql> CREATE TABLE so_q48786040(e ENUM('6', '5', '4', '3', '2', '1', '0'));
mysql> INSERT INTO so_q48786040 VALUES( 2 ), ( 4 ), ( 7 ), ( '6' );
Query OK, 4 rows affected (0.05 sec)
Records: 4  Duplicates: 0  Warnings: 0
选择所有行,返回值5,3,0,6

mysql> SELECT * FROM so_q48786040;
+------+
| e    |
+------+
| 5    |
| 3    |
| 0    |
| 6    |
+------+
4 rows in set (0.00 sec)
在特定指标上选择。结果将按照定义的枚举索引的顺序排列

mysql> SELECT * FROM so_q48786040 WHERE e IN( 7, 4 );
+------+
| e    |
+------+
| 3    | -- <--- at index 4
| 0    | -- <--- at index 7
+------+
2 rows in set (0.00 sec)
mysql> SELECT * FROM so_q48786040 WHERE e IN( '6', '3', '0' );
+------+
| e    |
+------+
| 3    |
| 0    |
| 6    |
+------+
3 rows in set (0.00 sec)
选择不存在的条目。返回空集,因为未插入“4”

mysql> SELECT * FROM so_q48786040 WHERE e IN( '4' );
Empty set (0.00 sec)
注意

mysql> drop table if exists so_q48786040;
mysql> CREATE TABLE so_q48786040(e ENUM('6', '5', '4', '3', '2', '1', '0'));
mysql> INSERT INTO so_q48786040 VALUES( 2 ), ( 4 ), ( 7 ), ( '6' );
Query OK, 4 rows affected (0.05 sec)
Records: 4  Duplicates: 0  Warnings: 0
  • 建议在索引0处定义空文本
  • NULL
    值的索引为
    NULL

如果数据类型在enum中,值为enum('0'、'1'、'2'、'3'、'4'、'5'、'6'),如果值为1,我们在“in”子句中加上右引号,那么它不工作如果数据类型在enum中,值为enum('0'、'1'、'2'、'3'、'4'、'5'、'6'),如果值为1,我们在“in”子句中加上右引号,那么它不工作