如果是字符串的一部分,如何按数字排序?

时间:2018-07-14 22:00:17

标签: sql database sqlite

有没有一种方法可以按字符串的小数部分排序?我的数据存储如下:Some string value xx.yy,其中xx.yy是十进制数。

SELECT some_string FROM table ORDER BY some_string desc;

结果如下:

Some string value 18.9
Some string value 18.8
Some string value 18.7
...
Some string value 18.2
Some string value 18.13
Some string value 18.12
Some string value 18.11
Some string value 18.10
Some string value 18.1

但是所需的结果如下:

Some string value 18.13
Some string value 18.12
Some string value 18.11
Some string value 18.10
Some string value 18.9
Some string value 18.8
Some string value 18.7
...
Some string value 18.1

3 个答案:

答案 0 :(得分:2)

如果前缀长度相同,则可以使用以下技巧:

order by len(some_string) desc, some_string_desc

答案 1 :(得分:2)

您必须使用这些功能。

  

请参阅https://www.sqlite.org/lang_corefunc.html

SUBSTRLENGTHINSTR是可以拯救您的主要力量。一旦开始探索它们,您就会了解。

还是,我还是希望将两个值分开存储在单独的列中。在数据处理方面,这将为您提供更大的灵活性。

答案 2 :(得分:0)

这成功了。 len显然不是SQLite函数。谢谢@ gordon-linoff。

SELECT some_string 
FROM table_name 
ORDER BY length(some_string) desc, some_string desc