2

次のようなデータを含む列がテーブルにあります。

column: col_name
 row 1: 3451,3547,234,456,6487,2341,7856,546,76
 row 2: 4746,234,6757,234,7657,6346,563
 row 3: 546,7467,4562,456,234
 row 4: 563,3246,5641,4637,234,7854,567,577

ある番号が入っているかどうかでレコードを選べるようにしたいと思います。

たとえば、234がすべての行に表示されると、それらすべてが選択されます。563は2などに表示されます。これは動作しません:

select col_name from table_name where col_name like '%234%';

これは、列と行をどのように選択するか混乱しているためかもしれませんが、他に何が機能するかについては空白になっています。

編集:私は自分自身と一部の返信者(申し訳ありませんが、皆さん)を混乱させていると思います。クエリに一致する列名を見つけようとしているのではなく、クエリに一致する列のデータ、つまり行のデータを見つけようとしています。一部の回答は不明な列名を対象としているようですが、使用している列はわかっています。

これは、563を含む行を検索した場合に得られると予想されるものです。

4746,234,6757,234,7657,6346,563      (row 2)
563,3246,5641,4637,234,7854,567,577  (row 4)

次のようにクエリのすべての値を使用して検索すると、次のようになります。

select col_name from table_name where col_name = '4746,234,6757,234,7657,6346,563';

次に、行を返します。

4746,234,6757,234,7657,6346,563      (row 2)

しかし、私はそれらが異なるものを表すので、いくつかではなく、1つの数字を使用してそれを検索できるようにしたいだけです。

4

5 に答える 5

4

これは、 FIND_IN_SETを使用して実行できます。

SELECT col_name 
FROM table_name 
WHERE FIND_IN_SET('563', col_name);

例:SQLFiddle

于 2012-09-03T10:19:09.487 に答える
1

データベースにデータを保存した方法を確認し、それに応じてコンマとスペースを含むパターンを選択します。

それ以外の場合、クエリは正しいです!!

于 2012-09-03T10:23:12.363 に答える
0
select 
      col_name
from table_name 
WHERE col_name LIKE '234,%'
OR col_name LIKE '%,234'
OR col_name LIKE '%,234,%'
OR col_name = '234'

行について心配する必要はありません。列名を指定するだけで行を検索します。

于 2012-09-03T10:13:26.520 に答える
0

これを試して

SELECT col_name
FROM   table_name 
WHERE  concat(',',col_name,',') like '%,234,%';
于 2012-09-03T10:16:50.307 に答える
0

これを試してみてください

SELECT col_name FROM table_name WHERE'、' + col_name +'、' like'%、234、%';

于 2012-09-03T10:22:52.550 に答える