2

ここに私のデータがあります:

Column:
8
7,8
8,9,18
6,8,9
10,18
27,28

and を含む行のみが必要です8。私がする時:

Select * 
from table 
where column like '%8%'

が含まれているため、上記のすべてを取得します8。私がする時:

Select * 
from table 
where column like '%8%' 
   and column not like '%_8%'

私は得る:

8
8,9,18

取得できませんが6,8,9、含まれているため取得する必要があり8ます。

誰でも正しい結果を得るのを助けることができますか?

4

3 に答える 3

10

私は次のことをお勧めします:

SELECT *
FROM TABLE
WHERE column LIKE '%,8,%' OR column LIKE '%,8' OR column LIKE '8,%' OR Column='8';

しかし、このようなデータの保存は非常に非効率的であると言わざるを得ません。たとえば、インデックス作成はここでは役に立ちません。この方法を維持する本当に正当な理由がない限り、データの保存方法を変更することを検討する必要があります。

編集:

質問のコメントで @Bill Karwin のリンクを確認することを強くお勧めします。

区切られたリストをデータベース列に保存するのは本当に悪いことですか?

于 2013-07-09T22:08:14.420 に答える
8

あなたが使用することができます:

WHERE ','+col+',' LIKE '%,8,%'

そして、義務的な警告: リストの保存、悪い悪いなどは避けてください。

于 2013-07-09T22:08:57.330 に答える
3

どうですか:

where
    col like '8,%'
    or col like '%,8,%'
    or col like '%,8'
    or col = '8'

しかし理想的には、bluefeet が示唆するように、このデータを区切りテキストとして保存するのではなく正規化することで、あらゆる種類の頭痛の種を取り除くことができます。

于 2013-07-09T22:07:47.763 に答える