SQL Select where column在一组单词中包含1个值



我需要一个select函数,如果该行的a列包含用户输入的单词列表中的任何单词

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

由于单词列表的单词数量未知,所以我将整个列表存储在同一个字符串中。每个单词可以用"_", "-"或者留白

如果您正在使用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参数。

我想出了这个解决方案:

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

最新更新