我尝试在一列中搜索精确字符串的所有实例。
下面这两行返回相同的记录集。
select * from policy_templates where policy_content like '%[[Business Name]]%'
select * from policy_templates where policy_content like '%[[Business.Name]]%'
(区别在于业务和名称之间的句号)。
没有一条记录实际包含[[Business Name]]
-尽管查询返回了相同的结果集。所有实例均为[[Business.Name]]
。
我已经运行了一个脚本来用[[Business.Name]]
替换[[Business Name]]
的所有实例。此SQL按预期运行,并正确替换了所有实例。但是,考虑到上面的问题,如果它检测到[Business.Name]]
并用[[Business.Name]
替换它,我不会感到惊讶,这显然是不必要的。
在转移到更大的数据集(在生产环境中)之前,我已经在大约50行的较小数据集上进行了测试。目标列包含相当多的文本,所以我想让这个匹配精确到[[Business.Name]]
,因为它目前在[[Business Name]]
看来是模棱两可的。
发布于 2019-02-20 07:17:08
'%[[]]%'
用于正则表达式,.
表示任意字符。因此,在正则表达式中,'%[[Business Name]]%'
相当于[Business Name]
。关于该问题的Here is小型演示
因此,您需要对[
和]
进行转义,因为它们是LIKE
的特殊字符
WHERE POLICY_CONTENT LIKE '%\[\[Business Name\]\]% ESCAPE '\'
https://stackoverflow.com/questions/54776273
复制相似问题