我们需要在我们的网页中实施搜索功能。逻辑如下,
wildcard
应用于工作人员table
的staffid列。 wildcard
将应用于工作人员table
的staffname列。 如何实现上面的场景是sql server?
感谢您的帮助。
答案 0 :(得分:4)
正如我所提到的,更好的方法是有两个参数和分支搜索,具体取决于填充或一个查询。但如果你坚持这就是你如何做到这一点:
DECLARE @p VARCHAR(10) = 'jo'
--DECLARE @p VARCHAR(10) = '34'
DECLARE @t TABLE(StuffID INT, Name VARCHAR(100))
INSERT INTO @t VALUES
(1234, 'Michael Jordan'),
(7845, 'Scottie Pippen'),
(6541, 'Dennis Rodman'),
(1987, 'Phil Jackson')
SELECT * FROM @t
WHERE (@p NOT LIKE '%[^0-9]%' AND StuffID LIKE '%' + @p + '%') OR
(@p NOT LIKE '%[^a-z]%' AND Name LIKE '%' + @p + '%')
这可以理解为:如果@p
不包含StuffID
列中的数字搜索以外的符号,或者Name
列中不包含字符搜索以外的符号