0

-4,3,2,1and 3,2,1or 3orのような値を持つ行があります2

2値を持つ行を含む値を持つ行を選択する必要がありますが、最初は値を持つ行は選択し3,2,1ません。

みんなありがとう

4

3 に答える 3

1

なぜ正規表現なのか?

SELECT ..
WHERE LEFT(yourfield, 1) <> '-'
  AND (
    (yourfield = 2) OR
    (yourfield LIKE '2,%') OR
    (yourfield LIKE '%,2,%') OR
    (yourfield LIKE '%,2')
 )

次に、WHEREが非常に複雑である理由を理解しようとしているときに、データベースの正規化について確認する必要があります。

于 2013-02-19T15:49:28.017 に答える
1

私はこれを行う傾向がありますlike

select *
from t
where concat(',', col, ',') like '%,2,%' and
      col not like '-%'

「2」を探しているが、カンマで区切られていない場合:

select *
from t
where instr(col, '2') > 0 and col not like '-%'

マイナス記号で始まらず、「2」を含む列を取得するには:

where col regexp '^[^-]*2*'

コンマが重要な場合は、次のように動作するはずです。

where concat(',', col, ',') regexp ',^[^-]*,2,*'
于 2013-02-19T15:52:25.330 に答える
0

最良の解決策と私が見つけることができる最も簡単なもの:

where sponsored regexp '^[^-]*[1-2]'
于 2013-02-19T19:05:57.997 に答える