2

次のように定義された MySQL データベースのテーブルがあります。

CREATE TABLE doc_types (
    id    INT UNSIGNED PRIMARY KEY,
    types SET('foo','bar','baz','quux',...) NOT NULL
)

types列の値を、設定値のリストへの 1 ベースの整数オフセットのコンマ区切りリストとして取得したいと思います。たとえば"1,3,4"、値が の行の場合です"foo,baz,quux"。(この形式は、私が取り組んでいるシステムの別のツールで必要とされており、さまざまな実際的な理由から、別のものを受け入れるように変更することはできません。) 組み込みEXPORT_SET関数は完全に異なるわけではありませんが、その戻り値は異なります。基本的に"1,0,1,1,..."、文字列形式で表される 64 要素のビット セットです。

単一の SQL クエリ内で、上記のオフセット形式で値SELECT from doc_typesを取得して取得する良い方法はありますか?types

4

2 に答える 2

2

これを試して:

SELECT CONCAT_WS(',', 
  IF(types & 1 > 0, 1, NULL), 
  IF(types & 2 > 0, 2, NULL), 
  IF(types & 4 > 0, 3, NULL), 
  /* fill in rest here */
  ) as output 
FROM doc_types;
于 2009-03-30T18:42:08.700 に答える
1

これを試して:

SELECT MAKE_SET(types+0, '1', '2', '3') as output FROM doc_types;
于 2012-09-18T15:46:28.127 に答える