記一個空格引發的血案
阿新 • • 發佈:2021-10-21
特助字元引起的SQL錯誤;找不到SQL問題?看起來完美無缺的它竟然是因為這個!
(又水了一篇慚愧)
今天一個數據的同事找到我,說他有一段怎麼看都很正常也很簡單的SQL,就是一直報錯,研究了一天了也沒搞明白。專案進度緊張,我讓他先發我看看。
環境:FD1.6(psql6.16.2)
1. 原SQL分析
SELECT
casewhenAA >= 1 then 'aaa'
else 'a'
end as tonn
FROM (
select
coalesce(new_tonnage1,0)::int AA
from ods.new_productmodel
) A
看著沒啥問題啊···手動規整了下格式
SELECT CASE WHENAA >= 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