我正在尝试在同一列上搜索 exact 字符串的所有实例。
以下两行均返回相同的记录集。
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]]
模棱两可。
答案 0 :(得分:1)
'%[[]]%'
用于正则表达式,.
表示任何字符。结果'%[[Business Name]]%'
等效于Regex中的[Business Name]
。 Here is关于该问题的小型演示
因此,您需要转义[
和]
,因为它们是LIKE
的特殊字符
WHERE POLICY_CONTENT LIKE '%\[\[Business Name\]\]% ESCAPE '\'