2016-05-10 5 views
0

CSV valueを保持するテーブルcolumnがあります。例:2,3,4,1,13 具体的にはCSVからstringを見つけて、rowと一致する正確な検索stringcsvから返します。sqlのcsvカラムから正確な文字列に一致する行を返す方法は?

表:

tbl_A(ID,name,Csv) 

ID name CSV 
1 ABC 1,2,13,15 
2 PQR 1,4,3,5 

@SearchSting=13 

必要な出力:

ID name CSV 
1 ABC 1,2,13,15 


select * from tbl_A where csv like '%@SearchSting%' 

これは、両方の行を与えるだろう。 :(

ヘルプは感謝!

+0

チェックを、この場合に役立ちます - のhttp:// stackoverfl ow.com/questions/9207628/sql-search-from-csv-string – MusicLovingIndianGirl

+1

どのDBMSを使用していますか? Postgres?オラクル?最善の解決策は、壊れたデザインを修正することです。 –

+0

そのSQLSERVER2012! –

答えて

1

が、これは貧弱なデータベース設計であり、避けるべきであるということから始める。 可能であれば、あなたのデータベースを正規化し、それぞれの値を含むテーブルにそのCSV列を変更する必要があります私を残し。それ自身の行に 深い読み:あなたのデータベースを正規化することは選択肢ではない場合Is storing a delimited list in a database column really that bad?

しかし、あなたがこれを行うことができます:

SELECT Id, Name, Csv 
FROM tbl_A 
WHERE ',' + Csv + ',' LIKE '%,' + @SearchString + ',%' 
+0

@a_horse_with_no_name良いキャッチ!固定、ありがとう。 –

+0

こんにちは@Zohar Peled、このソリューションはsqlserverで動作しません!以前の解決策が働いた...前のものへの答えを元に戻してください...! –

+1

完了。質問に関連するタグをすべて使用するように通知してください。他のデータベースはSQL標準を使用しています。 a_horse_with_no_nameが正当に書いたように文字列を連結します。 –

関連する問題