SQLite:使用包含逗号分隔字符串值的列进行过滤

问题描述 投票:0回答:1

有没有办法根据包含逗号分隔字符串值的列值过滤表中的行?

示例:

id |类别ID

0 | 33,3332,335

1 | 334,3310,332

2 | 32,33,34

3 | 35,38,33

4 | 34,233,331

我只想获取类别 id 为

33
的行,即 0,2,3。我正在考虑像这样使用
LIKE
运算符
SELECT * FROM news WHERE categoryIds LIKE :categoryId || ',%' OR categoryIds LIKE '%,' || :categoryId OR categoryIds LIKE '%,' || :categoryId || ',%'

但显然这是不正确的。

sql database sqlite
1个回答
0
投票

您可以修改

LIKE
子句来处理这些情况:

SELECT * FROM news WHERE
  categories = :categoryId OR -- Single value match
  categories LIKE :categoryId || ',%' OR -- Starts with
  categories LIKE '%,' || :categoryId OR -- Ends with
  categories LIKE '%,' || :categoryId || ',%' -- In the middle

这样您就可以覆盖 :

categoryId
(在您的情况下为“33”)在逗号分隔字符串中可能具有的所有可能位置。

© www.soinside.com 2019 - 2024. All rights reserved.