【发布时间】:2016-07-21 04:03:18
【问题描述】:
我的 SQL 没有按预期工作。我发现这是因为其中一个like 子句。
我期待下面的sql
select * from SomeTable Where "%,2,%" like ",1,2,3,";
给出与
相同的结果select * from SomeTable;
但它实际上什么也没提供。
我无法扩展",1,2,3,",也无法使用find_in_set,因为我使用的是memsql。
那么有没有其他方法可以确定条目是否在逗号分隔的列表字符串中,或者我做错了什么?
【问题讨论】:
-
你不是说
select * from SomeTable Where "%,2,%" like ",1,2,3,";吧? & 必须在 like 的右边:select * from SomeTable Where ",1,2,3," like "%,2,%"; -
因为你把它放回了前面。包含
%字符的匹配模式在LIKE之后,要比较的值在之前。 -
在 MemSQL 中执行此操作的最佳方式是通过 JSON。即使您的数据未格式化为 JSON,您也可以执行以下操作: json_array_contains_double(concat('[',column_with_list_of_ids,']'), 2) 以获得与 find_in_set(2, column_with_list_of_ids) 相同的行为。
标签: mysql singlestore