【问题标题】:SQL conditional that searches for substring and returns 'true' or 'false'搜索子字符串并返回“真”或“假”的 SQL 条件
【发布时间】:2017-07-04 05:16:08
【问题描述】:

我需要做一个映射,这会使我对 SQL 的处理感到负担。

我需要知道表格单元格中包含的 CSV 中是否存在子字符串。如果是这样,我需要它返回字符串 'true' 否则 'false'

此查询的工作原理是它返回我需要检查的 CSV:

select table.value from table where table.user_id = 1 and table.keyname = 'email_list'

我试图在这样的条件中包含该 SQL:

IF ( (select table.value from table where table.user_id = 1 and 
table.keyname = 'email_list') LIKE '%substring%') THEN 'true' ELSE 'false'

但到目前为止还没有运气。这实际上是一个更大的查询的一个组件,将不同元素从一个表映射到另一个表,所以我真的需要它只返回一个“真”或“假”字符串,以便它正常工作。

表结构如下所示:

User   KEYNAME        value (in the form of CSV)
1       email_list   george@gmail.com, george@yahoo.com
2       email_list   
3       email_list   kiley@yahoo.com
4       email_list   kim@gmail.com, kimmy@hotmail.com, wondergirl@yahoo.com   

【问题讨论】:

  • 请显示几行示例数据,以明确您要在这里做什么。
  • 尝试使用Case语句..

标签: mysql sql csv substring


【解决方案1】:

在 select 子句中使用 CASE 语句应该可以解决您的问题。

类似下面的东西

select case when table.value LIKE '%substring%' 
        then 'TRUE' else 'FALSE' end as "Result" 
from table where table.user_id = 1 and 
table.keyname = 'email_list'

【讨论】:

  • 糟糕,很抱歉不接受答案。如果你有时间,我想知道查询中的“结果”结尾是什么?
  • END 是结束case语句,是一种语法。 AS "result" 只是结果列的别名列名。
【解决方案2】:

SELECT table.value FROM table WHERE EXISTS (select table.value FROM table WHERE table.user_id = 1 AND table.keyname = 'email_list' AND table.value LIKE '%substring%');

我希望这能解决问题。

【讨论】:

    猜你喜欢
    • 2014-10-05
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    • 2015-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-13
    相关资源
    最近更新 更多