我需要在 Postgres 中运行以下查询:
select left(file_date, 10) as date, lob_name, devicesegment, sum(conversion_units::numeric) as units
from bac_search.dash_search_data
where (lob_name= 'Mortgage' and file_date::date between (CURRENT_DATE - INTERVAL '30 days') and CURRENT_DATE)
or (lob_name= 'Loans' and file_date::date between (CURRENT_DATE - INTERVAL '30 days') and CURRENT_DATE)
group by file_date, lob_name, devicesegment
order by file_date, lob_name, devicesegment;
尽管将 conversion_units 设置为数字,但它还是给了我以下错误:
ERROR: invalid input syntax for type numeric: ""
********** Error **********
ERROR: invalid input syntax for type numeric: ""
SQL state: 22P02
值得注意的是,我已经做了一些单元测试,当我运行抵押查询并删除贷款行时,它工作正常。我已将问题隔离到conversion_units::numeric
for Loans
。除了通常的转换(正如我在此处指定的那样)之外,我不确定还可以尝试什么。我通读了带有此错误的问题,但它们似乎没有反映我的问题。任何帮助表示赞赏!谢谢!
显然conversion_units
是一个字符串,可以保存不可转换为的值numeric
.
您眼前的问题可以这样解决:
SUM(NULLIF(conversion_units, '')::numeric)
但也可以有其他值。
您可以尝试使用正则表达式来匹配可转换字符串:
SUM((CASE WHEN conversion_units ~ E'^\\d(?:\\.\\d)*$' THEN conversion_units END)::numeric)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)