【发布时间】:2017-02-10 11:23:24
【问题描述】:
我正在使用 like 语句:%word%,但问题是它也匹配其他单词中的单词。
我怎样才能像这样匹配字符串中与其他单词分开的单词。我想在这些字符串中匹配 word1:
word1 word2 word3
word2 word1 word3
word2 word3 word1
不要匹配这个:word2word1
【问题讨论】:
我正在使用 like 语句:%word%,但问题是它也匹配其他单词中的单词。
我怎样才能像这样匹配字符串中与其他单词分开的单词。我想在这些字符串中匹配 word1:
word1 word2 word3
word2 word1 word3
word2 word3 word1
不要匹配这个:word2word1
【问题讨论】:
您可以使用INSTR 函数来获取所需的字符串
WHERE column_name = INSTR(column_name,'word')
INSTR - Instring 函数匹配函数中提供的字符串。此功能不是使用 like 运算符,而是为您提供所需的结果。与 INSTR 函数相比,like 运算符搜索所有可能的组合并花费更多时间。为了提高性能,可以使用 INSTR 函数。
【讨论】:
在通用 SQL 中执行此操作的最简单方法如下:
where ' ' || col || ' ' like '% word1 %'
请注意,字符串连接的运算符可能因数据库而异。
【讨论】:
主要思想是:也匹配空间。
col LIKE '% doc %' OR col LIKE '% doc' OR col LIKE 'doc %' OR col = 'doc'
【讨论】:
% doc 只匹配 abcd[space]doc,不匹配 abcddoc 也不匹配 abc docefg