select 'Device Reprocessing' similar to '%( )%' --return true
select 'Device Reprocessing' similar to '%()%' --return true
select 'DeviceReprocessing' similar to '%()%' --return true
为什么第二个和第三个查询返回true?空模式总是返回true吗?
我对SIMILAR TO运算符的理解是返回true或false,具体取决于其模式是否与给定的字符串匹配。
答案 0 :(得分:2)
您已经定义了一个没有任何内容的组,这意味着任何内容都匹配。我想你会发现任何字符串匹配%()%
,甚至是空字符串。
通常你会使用这个分组来列出选项:
select 'DeviceReprocessing' similar to '%(Davinci|Dog)%'
会返回false,因为它既不包含" Davinci"也不是" Dog",但是这个:
select 'DeviceReprocessing' similar to '%(vice|Dog)%'
将返回true,因为它确实包含至少一个选项。
您的第一个条件为真,因为表达式确实包含空格。
我实际上更喜欢不需要%
通配符的正则表达式表示法:
select 'DeviceReprocessing' ~ 'vice|Dog'