用于从包含多个值的列中获取值的 sqlite 查询

sqlite query for getting a value from a column containing multiple values

我有一个简单的 table,如下所示

我需要找到编号为 3 的 'ID',所以我写了如下查询

select * from IDtable where Number like '%3%'

它实际上返回了所有 ID,因为我使用了 like 并且 Number 包含许多以 3 开头的值,我如何获得 id 其中包含 3

在列的开头和结尾处连接一个 ,,并使用运算符 LIKE:

检查它是否包含 ',3,'
SELECT * 
FROM IDtable 
WHERE ',' || Number || ',' LIKE '%,3,%'

INSTR():

SELECT * 
FROM IDtable 
WHERE INSTR(',' || Number || ',', ',3,')

在 Python 中,您应该为参数 "3":

使用 ? 占位符
n = "3"
sql = """
SELECT * 
FROM IDtable 
WHERE ',' || Number || ',' LIKE '%,' || ? || ',%'
"""
cursor.execute(sql, (n,))

请注意,规范化的 table 如:

ID Number
Ab 2
Ab 9
Ab 16
... ......
cD 3
cD 10
cD 17
... ......

将为您省去使用可能会降低性能的复杂字符串表达式进行查询的所有麻烦。