如果我的列值在MySQL中为逗号,如何选择行?

时间:2019-06-13 10:51:01

标签: mysql sql

我有一个表名myTable,其行如下:

*--------------------------------------------*
| S.No. | user_id  | Event Name | Event Date |
*--------------------------------------------*
|  101  |  9,19    | Juniorun   | 25-June-19 |
*--------------------------------------------*
|  102  |  9,20    | Juniorun1  | 30-June-19 |
*--------------------------------------------*
|  103  |  9,21    | Juniorun2  | 27-June-19 |
*--------------------------------------------*
|  104  |  9,18,19 | Juniorun3  | 26-June-19 |
*--------------------------------------------*

现在我的用户ID为19,然后,我要选择用户ID为19的行。

我想要:

*--------------------------------------------*
| S.No. | user_id  | Event Name | Event Date |
*--------------------------------------------*
|  101  |  9,19    | Juniorun   | 25-June-19 |
*--------------------------------------------*
|  104  |  9,18,19 | Juniorun3  | 26-June-19 |
*--------------------------------------------*

为此,我使用以下查询:

SELECT * FROM myTable WHERE user_id IN ('19');

但是我的查询没有任何值。它显示为空白。

4 个答案:

答案 0 :(得分:1)

鉴于user_id以字符串形式存储,您可以使用LIKE运算符(不推荐)

SELECT *
FROM myTable
WHERE user_id LIKE '%19%';

或者在WHERE子句中使用FIND_IN_SET

SELECT *
FROM myTable
WHERE FIND_IN_SET('19', user_id) > 0;

答案 1 :(得分:0)

使用FIND_IN_SET(),可以达到预期的效果:

SELECT * 
FROM myTable 
WHERE FIND_IN_SET('19', user_id);

Demo on db<>fiddle

答案 2 :(得分:0)

尝试FIND_IN_SET

SELECT * FROM myTable WHERE FIND_IN_SET(19,user_id)

答案 3 :(得分:0)

FIND_IN_SET()函数返回字符串在字符串列表中的位置。 FIND_IN_SET(字符串,字符串列表) 参数说明 字符串必需。要搜索的字符串 string_list必需。要搜索的字符串值列表(以逗号分隔) 然后您的SQL将是

SELECT * FROM myTable WHERE FIND_IN_SET(19,user_id)