1

我在记录中搜索字段中的键时遇到问题。

  • disProdlist = 包含 1 个或多个键,exp (1,2,3,9,..等等)。

我喜欢在“disProdlist”字段中显示包含键“9”的记录。

这是我的查询:

SELECT disProdName FROM discount WHERE FIND_IN_SET('9','disProdlist');

但是,它不返回任何结果。

所以,我尝试了一个实验,我尝试将“disProdlist”更改为只有一个键并且它成功返回了结果。但是,我希望“disProdlist”包含更多的键。

那么,任何人都可以帮助我解决我的问题吗?

4

2 回答 2

1

尝试这个

   SELECT disProdName FROM discount WHERE FIND_IN_SET('9','1,2,3,9,..and so on');

或者

   SELECT disProdName FROM discount WHERE FIND_IN_SET('9',disProdlist);

如果 disProdlist 它是一列

这里有一个演示

于 2013-04-29T10:10:01.700 回答
1

如果 disProdList 是字段的名称,则不应将其放在查询中的单引号之间。

SELECT disProdName FROM discount WHERE FIND_IN_SET('9','disProdlist');

这个请求是不正确的。第二个参数必须是一个字符串列表(由doc中所述的由“,”字符分隔的子字符串组成的字符串)。

正确的查询是:

SELECT disProdName FROM discount WHERE FIND_IN_SET('9',disProdlist);

假设 disProdlist 是正确格式的字符串 (VARCHAR, TEXT, ... ) 或SET类型

于 2013-04-29T10:20:02.327 回答