【问题标题】:SQL Select where column contains 1 value in set of wordsSQL Select where column contains 1 value in set of words
【发布时间】:2021-11-30 16:05:13
【问题描述】:

我需要一个选择,如果该行的 A 列包含从用户输入获得的单词列表中的任何单词,则该选择将返回该行

SELECT * 
FROM MyTable 
WHERE ColumnA CONTAINS ANY 'list of word' 

由于单词列表中的单词数量未知,因此我将整个列表存储在同一个字符串中。每个单词可以用“_”、“-”或空格分隔。

【问题讨论】:

  • 你使用的是什么数据库?
  • 我正在使用 SQL Server

标签: sql select


【解决方案1】:

如果你正在使用 oracle,你可以尝试这样的事情:

SELECT * FROM MyTable WHERE ColumnA in (select upper(regexp_substr('word1- 
word2-word3','[^-]+',1,level)) from dual
connect by upper(regexp_substr('word1-word2-word3','[^-]+',1,level)) is 
not null)

如果您使用“_”,则将连字符替换为下划线是 regexp_substr 参数。

【讨论】:

  • 谢谢!我会记住这一点。但我目前坚持使用 SQL 服务器
【解决方案2】:

我想出了这个解决方案:

SELECT *
from TableA tb 
RIGHT JOIN STRING_SPLIT ( 'list of words' , 'seperator' ) v on tb.ColumnA = v.value
WHERE tb.ColumnA IS NOT NULL

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多