postgresql中字符串与数字的混合排序

数据中心部分数据的标题是混合字符串与数组的,比如:

… site no. 1
… site no. 10
… site no. 2

之前,是按照title的字符进行升序排序了,排序结果就如上所示。这里和我们常规理解有所区别的就在于其排序是按照1、10、11、…、2、3进行排序的,而我们通常想要的结果是希望按照站点编号的自然数大小进行排序,即1、2、…、9、10…。

之前的sql语句是这样的:

… order by title

而要满足这个要求,第一个改造的结果是这样的:

… order by substring(title, ‘[^0-9]*’), (substring(title, ‘No.([0-9]+)’))::int

这样可以满足上面的需求,即No.1之类的标题可以排序,但若数字在中间就难以处理了,比如:

…10 July, 2012
…9 August, 2012

因此又继续改造:

…order by regexp_replace(title,'[0-9]+’,”,’g’),(substring(title, ‘([0-9]+)’))::int

这样可以解决上面的问题,但还是不完美,即有多个间断的数字,排序还是有问题的。
比如:

…10 July, 2012
…9 July, 2013

这种问题留待以后解决吧。


已发布

分类

来自

评论

《 “postgresql中字符串与数字的混合排序” 》 有 13 条评论

  1. cheap androxal american pharmacy

    buying androxal purchase in australia

  2. get enclomiphene cheap where

    buy enclomiphene australia where to buy

  3. donde comprar rifaximin en galerias capon

    buying rifaximin real price

  4. buy cheap xifaxan generic online cheapest

    how to get free xifaxan

  5. cheap staxyn canada no prescription

    online order staxyn buy adelaide

  6. buy avodart generic canada no prescription

    avodart ordering without a dr

  7. how to buy dutasteride online no rx

    purchase dutasteride generic in united states

  8. ed rx online flexeril cyclobenzaprine

    online order flexeril cyclobenzaprine generic health

  9. ordering gabapentin price in canada

    order gabapentin generic alternative

  10. fildena at lower price

    how to buy fildena australia online generic

  11. purchase itraconazole generic vs brand name

    get itraconazole generic drug india

  12. comprar kamagra cs přirozený sex

    levnテゥ kamagra bez lテゥkaナ冱kテゥho pナ册dpisu

  13. kamagra en vente pas cher en ligne

    aucun rx nécessaire pour acheter kamagra

回复 purchase rifaximin cost of tablet 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注