SQL Server2008のない()のような
-
22-09-2019 - |
質問
構築を行ってい示唆タグシステム(音声の怪しいパス文字列のdbがあれば、試合での返送するタグです。また複製タグはこのタグはっきりしなかったので返されます。だってタグを追加して、タイピング"私たち"になっていてウェブのための第二の時間として。
でも、そうで使用すれば問題ありません。を送りたいのは、現在のタグを使用しない()を除去する重複している。以下は、SPコード:
SELECT TOP 1 t.vTagName As vTagName
FROM Tags t
WHERE t.vTagName LIKE @vTagName+'%'
AND t.nTagPortalId = @nPortalId
AND t.vTagName NOT IN(@vCurrentTags)
ORDER BY vTagName ASC
この取得の経過:
EXEC GetTagSuggest 'We','Web,Print,Design,Advertising,Revenue'
このクエリに対する応答はvTagName=。当然、これは正しい結果になることは間違いありvTagNameのような"しなの"Webなど---。"..
感謝。
解決
のINステートメントは、そのような仕事をしません。
あなたがする必要がありますどのような
でありますt.vTagName not in ('Web','Print','Design','Advertising','Revenue')
その場合の一つの変数でそれを持つことになるではない仕事ます。
他のヒント
あなたは、文字列を分割、または動的SQLにSQL文全体を変換する必要があります。
EDITます:
他の例あたりの変数アウト分割、または動的SQLを行います。
のこれはベストプラクティスではありませんの、しかし、あなたのアイデアを与えることだけである。
DECLARE @sql nvarchar(max) = 'SELECT TOP 1 t.vTagName As vTagName '
SELECT @sql = @sql + 'FROM Tags t '
SELECT @sql = @sql + 'WHERE t.vTagName LIKE ' + @vTagName + '% '
SELECT @sql = @sql + 'AND t.nTagPortalId = ' + @nPortalId + ' '
SELECT @sql = @sql + 'AND t.vTagName NOT IN(' + @vCurrentTags + ') '
SELECT @sql = @sql + 'ORDER BY vTagName ASC'
EXEC sp_executesql @sql, @vTagName, @nPortalId, @vCurrentTags
所属していません StackOverflow