我有一個參數(@FULL_NAME)填充未分類的全名,使用逗號作爲每個單詞的分隔符。我想選擇一個包含該參數中所有單詞的所有行。SQL:匹配整個字符串unsorted
下面是一個例子,我要找的人是:
- 名: 「胡安·馬丁」
- 姓: 「洛佩茲」
參數@FULL_NAME有淡水河谷:「馬丁,洛佩茲,JUAN」
下面是我用找到該行的代碼:
DECLARE
@SQL nvarchar(max),
@FULL_NAME nvarchar(max),
@AUX nvarchar(max)
SET @FULL_NAME = 'MARTIN,LOPEZ,JUAN'
SET @SQL = 'SELECT * FROM PEOPLE WHERE '
DECLARE AUX CURSOR FAST_FORWARD FOR (SELECT strval FROM dbo.Split(@FULL_NAME,','))
OPEN AUX
FETCH NEXT FROM AUX INTO @AUX
SET @SQL = @SQL + ''' '' + First_Name + '' '' + Last_Name + '' '' LIKE ''% ' + @AUX + ' %'''
FETCH NEXT FROM AUX INTO @AUX
WHILE @@FETCH_STATUS = 0
BEGIN
SET @SQL = @SQL + ' AND '' '' + First_Name + '' '' + Last_Name + '' '' LIKE ''% ' + @AUX + ' %'''
FETCH NEXT FROM AUX INTO @AUX
END
CLOSE AUX
DEALLOCATE AUX
SELECT @SQL
有沒有這樣簡單的方法?
謝謝!
根據需要將無法工作。使用該代碼,您將獲得包含至少一個參數@FULL_NAME的所有行。我需要得到那些包括所有這些的。 – smopuiM
@smopuiM - 立即更新。 –
謝謝!這段代碼實際上有效。我不知道「有」的情況。現在我想知道應該使用哪個代碼,原始代碼要快一點,但是這個代碼要簡單得多。 – smopuiM