2016-09-09 4 views
2

SQL Serverカンマ文字列で検索する必要があります。例えばSQL Serverのカンマ文字列で検索

カラムtypeの値"A, C, T"を有しており、ユーザがアプリ値"M, T"通過します。

少なくともMT、またはその両方を含むすべての行を返す必要があります。この場合、A, C, Tを返す必要があります。

+8

コンマ区切りのアイテムとしてデータを保存しないでください。それはあなたに多くのトラブルを引き起こすだけです。 – jarlh

+1

あなたの価値を最初に分けて(http://stackoverflow.com/questions/10581772/how-to-split-a-comma-separated-value-to-columns)それを比較してください – Prisoner

答えて

1

正しい解決策は、1行につき1つのtypeというデータ構造を修正することです。複数の値を1つの列に格納しないでください。

しかし、時には他の人の悪い設計の決定に悩まされています。あなたはこれを解決するためにlikeを使用することができます。

where ', ' + type + ', ' like '%, M, %' or 
     ', ' + type + ', ' like '%, T, %' 

ここにトリックは、彼らがtypeの開始または終了しているとき、「M」と「T」はまた、発見されるように、typeラウンドコンマをラップすることです。

+0

ありがとう!それは非常に古いデータベースであり、構造を変更することはできません。私は最高のソリューションは、タイプ別に列になるだろうと思うが... :) –

関連する問題