我目前正在构建一个select查询,将一些数据从一个旧的笨拙的数据库结构中传输到一个新的应用程序中。通常情况下,虽然一切都很好,但我也想清理一些东西。
两个varchar(50)字段包含地理坐标。它们被命名为纬度和经度并不奇怪,理想值看起来有点像这样: 10.9627823122
我已经发现我可以这样处理它们:
CAST(mytable.`longitude` as DECIMAL(16,12))这很好,但不幸的是,有一些行以前有空值,现在变成了0.000000000000,还有一些到目前为止还包含无用的东西(像愚蠢的文本,urls和其他东西),因为脚本没有在输入端做任何检查。我更喜欢将这些字段设置为NULL insead 0.00000000000。当然,我可以在生成的CSV导出文件上执行简单的搜索/替换操作,但如果可能的话,我更希望知道如何在SQL中执行此操作。
任何帮助都是非常感谢的。
发布于 2016-03-16 03:34:29
正如Marc B在评论中发布的那样,下面是做到这一点的方法:
if(mytable.`longitude` <> '', CAST(mytable.`longitude` as DECIMAL(16,12)), null)感谢您的帮助!
发布于 2016-03-16 03:29:09
您可以在导出数据时使用以下命令清理数据:
Select top 10
Case CAST(mytable.`longitude` as DECIMAL(16,12)) = 0.000000000000
when 0.000000 then NUll
else CAST(mytable.`longitude` as DECIMAL(16,12)) = 0.000000000000
End
from myTablehttps://stackoverflow.com/questions/36020046
复制相似问题