Sto*_*wke 4 mysql boolean string-conversion insert-into
我使用的是INSERT查询SELECT从纯文本数据库为多个查询友好的数据库秒.为了避免与不必要的信息混淆,以下内容进行了简化,如果我为了清晰起见而进行了简化,请告诉我,我会修改.
来源数据如下:
| id (integer) | SomeCol (varchar) | BooleanCol (varchar) |
----------------------------------------------------------------------------
| 1 | 'String Data' | 'true' |
| 2 | 'Other Data' | 'false' |
Run Code Online (Sandbox Code Playgroud)
我的INSERT查询后目标表需要如下所示:
| id (integer) | SomeCol (varchar) | BooleanCol (tinyint(1)) |
-------------------------------------------------------------------------------
| 1 | 'String Data' | 1 |
| 2 | 'Other Data' | 0 |
Run Code Online (Sandbox Code Playgroud)
我正在寻找一些或多或少会像这样工作的东西,借用java语法:
INSERT INTO target(SomeCol, BooleanCol)
SELECT SomeCol, (BooleanCol IS NOT NULL ? (BooleanCol == 'true' ? 1 : 0) : null)
FROM source
Run Code Online (Sandbox Code Playgroud)
请注意,作为我想要的示例提供的java语法旨在null根据需要保留s.
此外,虽然我在这里,如果你碰巧知道SELECTMySQL的当前时间戳如何也会有所帮助.
Vat*_*tev 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
Run Code Online (Sandbox Code Playgroud)