SQL 查询 - 列表字段

标签 sql list sqlite

让我们将下表视为一个玩具示例:

id / to          / status  
1  / steve,jimmy / 0,2  
2  / john,julia  / 1,2  
3  / julia,peggy / 0,1  

我想获取“Julia”在“to”中的行以及她对应的“status”为“0”的行。

在这个简单的示例中,即第 n°3 行。

如何用 SQL 编写这样的查询?

PS:我正在使用 SQLite。

最佳答案

SQLite 不包含用于操作嵌入单列中的逗号分隔列表的内置函数。其他数据库也可以,但即使它们在满足您的要求时也会遇到一些麻烦,即从一个逗号分隔字符串中获取与另一个逗号分隔字符串中另一个值的索引相关的值。

为此,您必须编写一个用户定义的 SQLite 函数,该函数采用两个列值和两个字符串值,获取第一列中第一个值的索引,从第二列中的同一索引中提取值列,并将该值与第二个指定值进行比较。

一般来说,像这样的逗号分隔字符串在关系数据库中是禁忌,老实说,我什至不会尝试在 SQL 中解决这个问题。如果无法选择规范化数据库结构,只需在代码中进行即可。

关于SQL 查询 - 列表字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7908024/

相关文章:

python - 如何使 ON DELETE CASCADE 在 sqlite 3.7.4 中工作?

php - 将多个数据分组

css - 如何平衡具有可变高度的无序列表

python - 从列表创建字符串的有效方法

html - 如何在右侧列出图标并在每个图标下方相应地显示文字?

c# - Xamarin Android C# SQLite 参数查询

c - 如何在 SQLite 中启用访问控制?

php - 如何将 mysql_real_escape_string 用于数组?

sql - 循环数据库关系。好,坏,异常(exception)?

mysql - SQL 用户定义函数的参数数量不定?