如何在MySQL中使用FIND_IN_SET?

时间:2014-08-15 17:10:05

标签: mysql find set

如何使用FIND_IN_SET,

我拥有的价值是

|       Val         |
| No, 1, Yes,5, O, 4|

我试过

FIND_IN_SET('No', Val)

获得1的价值然后我尝试了:

FIND_IN_SET('No', Val) as 'No', FIND_IN_SET('Yes', Val) as ''Yes'

但得到了输出

|   No  |   Yes |
|   1   |   0   |

为什么它突然无法找到'是'在文中?

另一种格式:

| Val   |
| No, 1, 
  Yes,5, 
  O, 4   |

注意:这不是3行,只是在一行上,而是使用下一行(换行符)作为其他值

3 个答案:

答案 0 :(得分:1)

因为字符串中的实际值是' Yes'(带空格)

这将有效

SELECT FIND_IN_SET(' Yes',Val) FROM test

<强> Fiddle

但如果Yes是没有空格的第一个值,那么它就无法工作。您可以针对一般情况场景执行此操作(虽然有点贵)

SELECT FIND_IN_SET('Yes',REPLACE(Val," ","")) FROM test

<强> Fiddle

答案 1 :(得分:0)

因为'Yes'不在该集合中。但是,' Yes'是。

执行命令

SET @foo = 'No, 1, Yes,5, O, 4';
SELECT
  FIND_IN_SET('No', @foo),
  FIND_IN_SET('Yes', @foo),
  FIND_IN_SET(' Yes', @foo);

结果集:1,0,3

答案 2 :(得分:0)

此函数返回字符串的位置。 您可以通过本教程轻松了解FIND_IN_SET的使用 -

http://phpforweb.info/how-to-use-find_in_set-in-mysql-query/