我使用MySQL 8.0,并且试图将具有许多列的表中的空字符串更改为NULL。
我想知道是否有更智能的方法,可以在单个语句中将相同的UPDATE逻辑应用于多个列。
所以代替:
UPDATE tbl SET col1 = NULL WHERE col1 = '';
UPDATE tbl SET col2 = NULL WHERE col2 = '';
UPDATE tbl SET col3 = NULL WHERE col3 = '';
类似的东西:
UPDATE tbl SET <multiple_columns> = NULL WHERE <multiple_columns> = '';
可使用的最小数据集:
CREATE TABLE tbl (col1 TEXT, col2 TEXT, col3 TEXT);
INSERT INTO tbl VALUES ('', 'B', 'C'), ('A', '', 'C'), ('A', 'B', '');
谢谢!
答案 0 :(得分:1)
您可以使用case
表达式在单个查询中完成此操作,但是您需要将其应用于每一列
UPDATE tbl
SET col1 = case when col1 = '' then null else col1 end,
col2 = case when col2 = '' then null else col2 end,
col3 = case when col3 = '' then null else col3 end;