gpt4 book ai didi

SQL SELECT LIKE 只包含特定的词

转载 作者:行者123 更新时间:2023-12-04 22:14:53 25 4
gpt4 key购买 nike

我有这个问题:

SELECT * FROM mytable
WHERE column1 LIKE '%word1%'
AND column1 LIKE '%word2%'
AND column1 LIKE '%word3%'

我需要修改此查询以返回 column1 包含 word1 word2 和 word3 而没有其他内容的记录!没有别的词,只有这些词。

示例:搜索 samsung galaxy s3 应该返回 samsung s3 galaxy 的任意组合,但不是 samsung galaxy s3 lte

最佳答案

假设 column1 包含空格分隔的词,而您只想匹配整个 词,例如:

SELECT * FROM
(select ' ' + REPLACE(column1,' ',' ') + ' ' as column1 from mytable) t
WHERE
column1 like '% word1 %' AND
column1 like '% word2 %' AND
column1 like '% word3 %' AND
REPLACE(REPLACE(REPLACE(column1,
' word1 ',''),
' word2 ',''),
' word3 ','') = ''

请注意,此结构确实允许相同 词出现多次。从问题中不清楚是否应该允许这样做。 ( Fiddle )


如果这些词作为单独的行存储在与 mytable 相关的单独表中,那将是一个更好的设计。然后我们可以使用更正常的 SQL 来满足这个查询。您的示例看起来像是某种标记示例。用一个表将每个标签存储为单独的行(如果需要,还记录序号位置)会将其变成一个简单的关系除法问题。


一种计算单词在列中出现次数的方法是表达式:

(LEN(column2) - LEN(REPLACE(column2,'word',''))/LEN('word')

但这将再次恢复到匹配较大单词的子序列以及单词本身,而无需更多工作。

关于SQL SELECT LIKE 只包含特定的词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14291060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com