根据数据库字符串字段中的特定整数值选择一列

时间:2018-04-07 07:55:15

标签: sql sqlite

database table

我想在数据库表中选择id,其中allot字段在字符串中具有特定的整数值。

示例: - 在分配列中我想在逗号(,)分隔字符串中搜索值26,此处结果应为id = 72

3 个答案:

答案 0 :(得分:1)

修复您的数据结构!您应该使用每个值和每个id一行的联结/关联表。这是表示数据的SQL方式。为什么你的结构不好?

  • 应使用适当的类型存储数据。数字应存储为数字,而不是字符串。
  • 列应包含一个值。
  • 数据库具有用于存储值列表的强大数据结构。最着名的是。字符串不是合适的数据结构。
  • SQL引擎具有(相对)糟糕的字符串处理能力。
  • 对字符串的操作(几乎在所有情况下)都不利用索引和其他引擎优化。
  • 如果这些是id,则应正确声明外键关系。

有时,我们会遇到其他人真正非常糟糕的设计决策。在这些情况下,您可以使用like

SELECT p.id
FROM Prospects p
WHERE ',' || allot || ',' like '%,26,%';

答案 1 :(得分:0)

使用LIKE运算符,您应该能够解决您的需求。考虑到您的表名是Prospects:

SELECT id FROM Prospects
WHERE allot LIKE '%,26,%'

EDIT-1 :您可以通过在此处提到的查询中添加其他逗号来缩小搜索范围!

EDIT-2 :要另外处理方案,您可以使用与此类似的 UNION 进行相同的查询。这 不是 想要实现的东西,而是实现存储过程来检查这些场景并在逻辑中处理它。

SELECT id FROM Prospects
WHERE allot LIKE '%,26,%'

UNION

SELECT id FROM Prospects
WHERE allot LIKE '%,26%'

UNION

SELECT id FROM Prospects
WHERE allot LIKE '%26,%'

希望这能回答你的问题!

答案 2 :(得分:0)

尝试推荐'SELECT id FROM (table_name) WHERE allot LIKE '%,26,%' '%x%'将在提供的列中查找包含x的任何内容 基本上如果你找到x的东西给我