我想創建這將能夠使用一個短語的話在我的「標準」(像谷歌一樣)搜索使用短語SQL Server查詢
例一查詢詞: 我的一句話: '富酒吧測試'
我的數據庫表:
|柱|
'嗨吧'
'測試吧'
'嗨富'
'這裏沒有'
'再富'
結果,我很等待:
|專欄|
'嗨吧'
'測試吧'
'嗨富'
'富再次'
我想創建這將能夠使用一個短語的話在我的「標準」(像谷歌一樣)搜索使用短語SQL Server查詢
例一查詢詞: 我的一句話: '富酒吧測試'
我的數據庫表:
|柱|
'嗨吧'
'測試吧'
'嗨富'
'這裏沒有'
'再富'
結果,我很等待:
|專欄|
'嗨吧'
'測試吧'
'嗨富'
'富再次'
實現任何分裂/解析功能,可以幫助
Declare @YourTable table (YourFieldName varchar(100))
Insert Into @YourTable values
('Hi Bar'),
('Test Ba'),
('Hi Foo'),
('Nothing here'),
('Foo again')
Declare @SearchString varchar(max) = 'Foo Bar Test'
Select A.*
From @YourTable A
Join [dbo].[udf-Str-Parse](@SearchString,' ') B
on Charindex(RetVal,YourFieldName)>0
返回
YourFieldName
Hi Foo
Foo again
Hi Bar
Test Ba
UDF如果需要
CREATE FUNCTION [dbo].[udf-Str-Parse] (@String varchar(max),@Delimiter varchar(10))
Returns Table
As
Return (
Select RetSeq = Row_Number() over (Order By (Select null))
,RetVal = LTrim(RTrim(B.i.value('(./text())[1]', 'varchar(max)')))
From (Select x = Cast('<x>'+ Replace(@String,@Delimiter,'</x><x>')+'</x>' as xml).query('.')) as A
Cross Apply x.nodes('x') AS B(i)
);
--Select * from [dbo].[udf-Str-Parse]('Dog,Cat,House,Car',',')
--Select * from [dbo].[udf-Str-Parse]('John Cappelletti was here',' ')
您可以使用SQL Server FULL Text Index
做到這一點。可以用分割字符串函數以及
Declare @str varchar(500) = 'Foo Bar Test'
SELECT distinct tc.*
FROM (VALUES ('Hi Bar'),
('Test Bar'),
('Hi Foo'),
('Nothing here'),
('Foo again')) tc (columnss)
JOIN [dbo].[Delimitedsplit8k](@str, ' ') f
ON columnss LIKE '%' + f.Item + '%'
要創建拆分字符串函數檢查此鏈接http://www.sqlservercentral.com/articles/Tally+Table/72993/
查閱SQL Server的全文功能。 –
您可以使用「LIKE」運算符。例如:你想在表格中還是在所有列中的一列中搜索WHERE COLUMN LIKE'%Foo%'或COLUMN LIKE'%Bar%'或COLUMN LIKE'%Test%' –
? – GuidoG