【发布时间】:2021-07-05 08:01:39
【问题描述】:
我正在从 mssql 迁移到 postgresql,但在解决其中一个查询时遇到了问题。
我的查询:
SELECT 1,
CASE
WHEN cast((case
when split_part(mt_outward_qty,'/',1) > '0' then
substring(mt_outward_qty,0,split_part(mt_outward_qty,'/',1)::int)
when split_part(mt_outward_qty,'.',1)>'0' then
substring(mt_outward_qty,0,split_part(mt_outward_qty,'.',1)::int)
else
mt_outward_qty
end) as int) > 0
THEN 'Y'
ELSE 'N'
END
from STL_CS_Tra_requestdetails
LEFT JOIN STL_CS_Tra_storeopening ON req_id = so_requestid
LEFT JOIN STL_CS_Tra_multiple_timinig ON req_id = mt_reqid
执行此操作后,我得到:
整数的输入语法无效:“”
请帮我解决这个问题。
【问题讨论】:
-
看看这个另一个问题,也许它会帮助你:PG COPY error: invalid input syntax for integer
-
您需要将空字符串转换为
null值,例如使用nullif(.., '') -
如果您可以发布该列的一些示例数据
mt_outward_qty(这似乎违反了良好数据库设计的最基本原则)会更容易帮助您 -
当你转换一个空字符串(由你的
case表达式产生)as int时,mssql 会做什么,mt_outward_qty为空时的预期行为是什么?
标签: postgresql