mysql-if查询

liwlm1x9  于 2021-06-15  发布在  Mysql
关注(0)|答案(1)|浏览(231)

你好stackian飞越者,
我试图覆盖现有列中的数据,并在已设置的情况下执行str\u to\u date。
代码如下:

SELECT IF(columnA = '../../..' , '0000/00/00' , STR_TO_DATE(columnA, '%m/%d/%Y) 
FROM tablename
WHERE extract_date = '2018-12-31';

实际上,我必须使用这个逻辑来更新表。我试过这个:

UPDATE tablename
IF columnA = '../../..' THEN
SET columnA = '0000-00-00' ELSE
SET columnA = STR_TO_DATE(columnA,'%m/%d/%Y);

在这件事上需要任何帮助。

esyap4oy

esyap4oy1#

mysql的 REGEXP 接线员在这里很方便:

UPDATE tablename
SET date_col = CASE WHEN columnA REGEXP '[0-9]{2}/[0-9]{2}/[0-9]{4}'
                    THEN STR_TO_DATE(columnA, '%m/%d/%Y)
                    ELSE NULL END;

更新是没有意义的 columnA 从字符串到日期,因为类型不匹配。更好的策略是创建一个新列来存储日期。另外,我建议使用 NULL ,不是 0000-00-00 ,表示无法分析的日期字符串。
请注意,我使用的正则表达式不是万无一失的,并且不能完全验证日期字符串。但它至少应该剔除真正关闭的字符串数据。

相关问题