4

プレーンテキスト データベースからよりクエリしやすいデータベースへのINSERTクエリを使用しています。SELECT以下は、不必要な情報との混乱を避けるために大幅に簡略化されています。わかりやすくするために簡略化しすぎている場合は、お知らせください。修正します。

ソース データは次のように表示されます。


    |    id (integer)    |    SomeCol (varchar)    |    BooleanCol (varchar)   |    
    ----------------------------------------------------------------------------
    |    1               |    'String Data'        |    'true'                 |
    |    2               |    'Other Data'         |    'false'                |

INSERT私のクエリの後、ターゲットテーブルは次のようになる必要があります。


    |    id (integer)    |    SomeCol (varchar)    |    BooleanCol (tinyint(1))   |    
    -------------------------------------------------------------------------------
    |    1               |    'String Data'        |    1                         |
    |    2               |    'Other Data'         |    0                         |

Java構文から少し借りて、多かれ少なかれこのように機能するものを探しています:


    INSERT INTO target(SomeCol, BooleanCol) 
    SELECT SomeCol, (BooleanCol IS NOT NULL ? (BooleanCol == 'true' ? 1 : 0) : null) 
    FROM source

私が望むものの例として提供されている Java 構文は、null必要に応じて s を保持することを意図していることに注意してください。

また、私がここにいる間に、SELECTMySQL からの現在のタイム スタンプがどのように得られるかを知っていれば、それも役に立ちます。

4

1 に答える 1

14

Mysql には、ほとんどの言語の ?: 演算子に似た IF 演算子があります。IF(cond, val_if_true, val_if_false)

INSERT INTO target(SomeCol, BooleanCol) 
SELECT SomeCol, IF(BooleanCol IS NOT NULL , IF(BooleanCol = 'true' , 1 , 0) , null) 
FROM source
于 2013-03-28T22:47:19.580 に答える