列具有字符串值,如“1/200”、“3.5”或“6”。如何在单个SQL查询中将此字符串转换为数值?
我的实际SQL比较复杂,下面是一个简单的例子:

SELECT number_value_in_string FROM table

字符串格式的数值将是:
##
#.##
#/###
我需要按此列的数值排序。但博士后当然不同意我说的1/200是一个合适的数字。

最佳答案

看到你的名字,我不得不把你的回答简单化:

SELECT id, number_value_in_string FROM table
 ORDER BY CASE WHEN substr(number_value_in_string,1,2) = '1/'
        THEN 1/substr(number_value_in_string,3)::numeric
        ELSE number_value_in_string::numeric END, id;

忽略可能被零除。

关于sql - PostgreSQL:按从文本列计算的数值以单SQL语法顺序排​​列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7617110/

10-13 00:47