admin

PostgreSQL:以单SQL语法顺序,根据从文本列计算出的数值

sql

列具有字符串值,例如“ 1/200”,“ 3.5”或“ 6”。如何在单个SQL查询中将此字符串转换为数值?

我的实际SQL更复杂,这是一个简单的示例:

SELECT number_value_in_string FROM table

number_value_in_string的格式为以下之一:

  • #。##
  • #/ ###

我需要按此列的数值排序。但是,当然postgres与我不同意1/200是正确的数字。


阅读 185

收藏
2021-06-07

共1个答案

admin

看到你的名字,我不得不张贴一个简化的答案:

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;

忽略可能的除以零。

2021-06-07