由於您還沒有指定您的表名;我會創造一些。請運行以下命令:
create table dbWords (id int not null identity, words varchar(100), primary key (id))
insert into dbWords (words) values ('change of name, asb, repair, reporting violence')
CREATE FUNCTION [dbo].[fnSplitString]
(
@string NVARCHAR(MAX),
@delimiter CHAR(1)
)
RETURNS @output TABLE(splitdata NVARCHAR(MAX)
)
BEGIN
DECLARE @start INT, @end INT
SELECT @start = 1, @end = CHARINDEX(@delimiter, @string)
WHILE @start < LEN(@string) + 1 BEGIN
IF @end = 0
SET @end = LEN(@string) + 1
INSERT INTO @output (splitdata)
VALUES(SUBSTRING(@string, @start, @end - @start))
SET @start = @end + 1
SET @end = CHARINDEX(@delimiter, @string, @start)
END
RETURN
ENd
然後運行這個命令:
select * from dbWords inner join (
select * from dbo.fnSplitString('change of name, change of dob', ',')
) as splitdatatable on dbwords.words like '%,' + splitdata+ ',%'
or dbwords.words like '%,' + splitdata
or dbwords.words like splitdata + ',%'
傳遞到上面的SQL語句的功能的文本是由用戶輸入的文本。
您使用的是什麼版本的SQL服務器? – w0051977
嗨,Microsoft SQL Server 2014 SP2 – user114790
我會使用全文目錄並閱讀更多。 MS建議您在開始搜索大量文本時以這種方式進行搜索。如果你只是做了幾件事情和一個小型數據庫,它可能是好的。但最終,如果它是一個應用程序的全功能核心部分,它是一個更全面的功能集這種類型的操作。你也可以做類似的搜索,比如bike = bicycle,反之亦然。 https://blog.sqlauthority.com/2008/09/05/sql-server-creating-full-text-catalog-and-index/ – djangojazz