无法将大小写的结果转换为浮点型:CASE类型文本和双精度无法匹配

问题描述

查询

select id,case when title_en ~ '(kg)$' 
    then 
        substring(title_en 
        from 
        (length(title_en) - position(' ' in reverse(title_en)) + 1) -- last space position
        for 
        (position('kg' in title_en)) - (length(title_en) - position(' ' in reverse(title_en)) + 1) -- count of chars to extract
                 ) 
    else title_en
    end,

结果为 2,6 (文本)

好。现在,我需要将此文本转换为float。

我尝试这样( :: float ):

select id,case when title_en ~ '(kg)$' 
    then 
        substring(title_en 
        from 
        (length(title_en) - position(' ' in reverse(title_en)) + 1) -- last space position
        for 
        (position('kg' in title_en)) - (length(title_en) - position(' ' in reverse(title_en)) + 1) -- count of chars to extract
                 )::float
    else title_en
    end,

但是我得到了错误

ERROR:  CASE types text and double precision cannot be matched
LINE 17:   substring(title_en 
           ^
sql state: 42804
Character: 394

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)