记一个空格引发的血案
今天一个数据的同事找到我,说他有一段怎么看都很正常也很简单的SQL,就是一直报错,研究了一天了也没搞明白。项目进度紧张,我让他先发我看看。
环境:FD1.6(psql6.16.2)
1. 原SQL分析
SELECT
case when AA >= 1 then 'aaa'
else 'a'
end as tonn
FROM (
select
coalesce(new_tonnage1,0)::int AA
from ods.new_productmodel
) A
看着没啥问题啊···手动规整了下格式
SELECT
CASE
WHEN AA >= 1 THEN 'aaa'
ELSE 'a'
END AS tonn
FROM
(
SELECT
COALESCE (new_tonnage1, 0) :: INT AA
FROM
ods.new_productmodel
) A
得,这下更看不出问题了。差分代码执行,发现大概率是在case when这里的问题
2.各平台现象
我把SQL放入了navicat\kettle\FR\FT中分别运行,FT竟然可以运行?那这样看来是驱动的问题?因为我记得唯一的区别是FT数据连接用的FD类型,其他平台则用的PSQL驱动。不可能,这语句太常见了。
第二天复现得时候,又去唯一成功得FT上去看,这次没成功?!仔细回想,上次在FT上点了"美化SQL"的选项,看来应该是FT帮助我修复了错误。那就是特殊字符号的问题了,一旁的长忠提醒我,查下空格?好家伙,怎么还有不是空格得空格:
一百度,全角空格啊···
3.结论
问题是:敲入了不知名全角空格
原因是:SQL不支持全角空格
(又水了一篇惭愧)
本文来自博客园,作者:沧浪浊兮,转载请注明原文链接:https://www.cnblogs.com/shixiu/p/15429375.html