使用通配符对全名执行sql选择

时间:2016-08-02 20:30:15

标签: sql sql-server tsql

我有一个存储过程,我将一个名为@SearchText的常规字符串变量作为varchar传递。此变量包含名称,可以是名称的一部分,也可以是全名。我需要使用通配符对基于此变量的表进行选择。入站变量可以是任何类似的(对于名称'john smith'):

'j','joh','john','sm','smith','john s',john smith'......你明白了。

所以,我采取的直接方法是

select x from TableA
where FirstName like '%' + @SearchText + '%'
OR  LastName like '%' + @SearchText + '%'

显然,当遇到空格时,会搞砸结果集。有人可以帮我理解如何调整这个以便它可以匹配全名的任何“金额”吗?

如果已经回答了这个问题,我找不到它......现有解决方案的热链接就像在这里一样。

2 个答案:

答案 0 :(得分:2)

您可以按照以下方式执行此操作:

select x from TableA
where FirstName+' '+LastName like '%' + @SearchText + '%'

基本上,您首先连接名字和姓氏,并在连接上应用LIKE运算符。

答案 1 :(得分:2)

我可能会建议这样的事情:

where FirstName + ' ' + Lastname like '%' + replace(@Searchtest, ' ', '%') + '%' or
      LastName + ' ' + Firstname like '%' + replace(@Searchtest, ' ', '%') + '%'   

但是,如果您尝试进行此类全文搜索,则可以考虑使用全文索引。这通常为这些类型的查询提供了正确的功能级别。