نوشته شده توسط
m_amin_t
اونجوری که من یه جستجوی کلی کردم متوجه شدم که FTS رو هاست باید فعال کنه وگرنه کاربردی نداره. درسته؟ آیا راه دیگه ای برای جستجو که کار منو راه بندازه وجود داره؟
بله امکانش هست، ابتدا این تابع را ایجاد کنید سپس کوئری را اجرا کنید:
کوئری
SELECT question
FROM questions
INNER JOIN dbo.fnParseList(' ', @param) AS f
ON question LIKE '%' + f.Data + '%'
GROUP BY question
HAVING COUNT(*) = (SELECT COUNT(*) FROM dbo.fnParseList(' ', @param));
تابع:
CREATE FUNCTION dbo.fnParseList
(
@Delimiter CHAR,
@Text TEXT
)
RETURNS @Result TABLE (RowID SMALLINT IDENTITY(1, 1) PRIMARY KEY, Data VARCHAR(8000))
AS
BEGIN
DECLARE @NextPos INT,
@LastPos INT
SELECT @NextPos = CHARINDEX(@Delimiter, @Text, 1),
@LastPos = 0
WHILE @NextPos > 0
BEGIN
INSERT @Result
(
Data
)
SELECT SUBSTRING(@Text, @LastPos + 1, @NextPos - @LastPos - 1)
SELECT @LastPos = @NextPos,
@NextPos = CHARINDEX(@Delimiter, @Text, @NextPos + 1)
END
IF @NextPos <= @LastPos
INSERT @Result
(
Data
)
SELECT SUBSTRING(@Text, @LastPos + 1, DATALENGTH(@Text) - @LastPos)
RETURN
END