簡體   English   中英

如何按降序對 sql 紅移中的數字字符串進行排序?

[英]How to sort string with numbers in sql redshift in descending order?

我正在嘗試對字符串列(包含數字)進行排序,但它不起作用。 有什么辦法嗎?

+----------+
+-- name --+
+----------+
+-- W1 ---+
+-- W12 --+
+-- W2 ---+
+-- W3 ---+
+-- W53 ---+
+-- W52 ---+

這是行不通的。 我怎樣才能讓它在 sql 紅移中工作?

SELECT *
FROM table
order by name desc;

最簡單的數據處理方法是使用len()和名稱:

order by len(name) desc, name desc;

這假定數字之前的前綴始終是相同的長度(並且數字是沒有用零填充的整數)。

如果您正在尋找數字排序並且字符串具有不同數量的數字字符,您將需要轉換為數字類型。 例如,當按文本排序(升序)時,“3”出現在“10”之后,但當被視為數字時,3 出現在 10 之前。 為了將字符串轉換為數字類型,字符串必須只包含數字字符(0-9,.等)。 因此,一種方法是從字符串中去除所有非數字字符,然后轉換為 INT。 regexp_replace() 將是去除非數字字符的一種方法,但如果數字僅出現在字符串中的特定模式中,則有更快的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM