通配符匹配一个或零个字符

pap*_*zzo 7 t-sql wildcard sql-server-2008

这是否有一个简短的手?
是否有匹配任何或null的通配符?
另一个是说它在零或一个匹配.

select [id], [word] from [FTSwordDef]
 where [word] like 'system_'
    or [word] like 'system'
Run Code Online (Sandbox Code Playgroud)

And*_*y M 5

是的,有一种更短的方法,但它可能会使您的查询不可搜索(除非它已经是这样):

WHERE word + ' ' LIKE 'system_'
Run Code Online (Sandbox Code Playgroud)

它起作用是因为LIKE忽略左侧的任何额外空间,而如果它不是额外的,即如果它在右侧参数的长度内,它会像任何其他字符一样参与匹配模式字符串。

因此,例如,以下所有结果都会导致true

(1) 'system ' LIKE 'system_'
(2) 'systemA' LIKE 'system_'
(3) 'systemA ' LIKE 'system_'
Run Code Online (Sandbox Code Playgroud)

在(1)中,空格匹配_模式字符串的 。在(2)中,它是A匹配的_。在 中(3),它也是A同时忽略空间。

这是一个很好的小演示来说明这一点:http : //sqlfiddle.com/# !3 / d41d8/9521