我正在尝试创建一个将从表中返回人名的查询。
该表包含一个名为full_name的字段。
我在该字段的表格上创建了一个全文索引。
我有以下查询
ALTER procedure [dbo].[spGetContactFromContactName]
@contactname VARCHAR(200)
AS
DECLARE @searchstr VARCHAR(200)
set @searchstr = '"'+REPLACE(@contactname,',','*" OR ''')+'*"'
select * from tbl_ContactDetails
where contains(Full_Name,@searchstr)
这有效,但仅限于某些情况。
如果该字段包含名称 John James Jones ,则在您输入以下任何内容时,该查询将起作用:
但如果您输入 John Jones ,则无效。
我在线搜索了一个解决方案,这是上述查询的来源。任何想法或指示都将非常感激。
提前致谢
大卫
答案 0 :(得分:2)
试试这个。您的原始程序不能正确处理空间。
ALTER PROCEDURE [dbo].[spGetContactFromContactName]
@contactname VARCHAR(200)
AS
BEGIN
DECLARE @searchstr VARCHAR(200)
SET @contactname = REPLACE(REPLACE(@contactname, ',', '|'), ' ', '|')
SET @searchstr = '"' + REPLACE(@contactname, '|', '*" OR "') + '*"'
SELECT *
FROM tbl_ContactDetails
WHERE CONTAINS ( Full_Name, @searchstr )
END