해결책을 찾았습니다. 가장 빠르거나 가장 깨끗한 것은 아니지만 작동하는 것 같습니다. 나는 단어 분리기로 ''(공간)을 사용하기로 결정했다. 단순히 Exec prc
과 함께 표 1에서 ID를 선택합니다 끝에
CREATE PROCEDURE prc
AS
BEGIN
SET NOCOUNT ON;
declare @TEMP table (IDTable1 int, IDTable2 int)
DECLARE @etd TABLE
(
words nvarchar(max)
)
declare @idtable1 int, @Content nvarchar(max), @word nvarchar(max)
declare k cursor local forward_only for select [ID]
,[Content] from Table1
OPEN k;
FETCH NEXT FROM k INTO @idtable1 , @Content
WHILE @@FETCH_STATUS=0
BEGIN
delete from @etd
insert into @etd (words)
select * from dbo.f_SplitVarchar(@Content,' ')
declare k1 cursor local forward_only for select words from @etd
OPEN k1;
FETCH NEXT FROM k1 INTO @word
WHILE @@FETCH_STATUS=0
BEGIN
insert into @TEMP select @idtable1, ID from Table2 where ' ' + title + ' ' like '% ' + @word + ' %'
FETCH NEXT FROM k1 INTO @word
END
close k1
deallocate k1
FETCH NEXT FROM k INTO @idtable1 , @Content
END
close k
deallocate k
select * from @TEMP
END
GO
: 그런 다음 우리의 데이터를 가져 오기 위해 사용
CREATE FUNCTION [dbo].[f_SplitVarchar]
(
@RowData NVARCHAR(MAX) ,
@SplitOn NVARCHAR(5)
)
RETURNS @ReturnValue TABLE (Data NVARCHAR(MAX))
AS
BEGIN
DECLARE @Counter INT
SET @Counter = 1
WHILE (CHARINDEX(@SplitOn, @RowData) > 0)
BEGIN
INSERT INTO @ReturnValue
(data
)
SELECT Data = LTRIM(RTRIM(SUBSTRING(@RowData, 1,
CHARINDEX(@SplitOn,
@RowData) - 1)))
SET @RowData = SUBSTRING(@RowData,
CHARINDEX(@SplitOn, @RowData) + 1,
LEN(@RowData))
SET @Counter = @Counter + 1
END
INSERT INTO @ReturnValue
(data)
SELECT Data = LTRIM(RTRIM(@RowData))
RETURN
END;
을 :
먼저 우리는 단어에 텍스트를 분할 분할 기능을 작성해야 첫 번째 표의 단어가 포함 된 표 2의 ID 더 이상 도움이 필요하거나 아무것도 이해하지 못하면 =).
간단한 선택 또는 절차에서이 작업을 수행 하시겠습니까? – Whencesoever
@Whencesoever 절차. – Farshid
@Whencesoever 여러 행이나 명령문에 걸쳐 있으면 정상입니다. – Farshid