2016-06-22 7 views

答えて

3

データ構造を修正する必要があります。物のリストを文字列として格納することは、SQLでは非常に悪いことです。リストを格納する適切な方法は、1つのリスト項目につき1つの行を持つ異なるテーブルの行にあります。あなたの例では

は、両方のリストがアルファベット順に並べられます。あなたは、これは常に真であることがわかっている場合、あなたはこのような何かを行うことができます。

select t.* 
from t 
where t.a like '%' || replace(t.b, ';', '%') || %; 

これは、あなたが100%にやりたいことはありませんが、それはあなたの目的のために十分に近いかもしれません。

+0

は '||' 'OR'を意味'a;b;d;e'、出力を取るだろう。しかし、これを組み合わせ*(PHPのドット '.'のようなもの)*として使用したようです。さて、ここで何が起こっているのですか? MySQLでは '||'の意味は何ですか? – Alex

+0

@Alex。 。 。質問はOracleを指します。 Oracle(とPostgresとANSI SQLと他のいくつかのデータベース)では、 '||'は文字列を連結します。 MySQLでは、ANSI SQLモードに応じて、論理ORまたは文字列連結のいずれかになります。 –

+0

ああ、私は参照してください... +1 – Alex

1

ダブルバーは連結されています。

SELECT `first_name`||`last_name` FROM users; 

あなたはという名前の列取得します: first_nameを|| last_name

だからあなたのクエリwhere t.a like '%' || replace(t.b, ';', '%') || %;

%a%b%d%e%思っ

+0

ああ私が参照してください..ありがとう+1 – Alex

関連する問題