簡體   English   中英

SQL排序字符串和數字

[英]SQL Sorting Strings and Numbers

如果我有一個1,2,3,4,5,K列表1,2,3,4,5,K並且希望像K,1,2,3,4,5那樣進行排序K,1,2,3,4,5該如何在SQL中執行此操作? 這些值是SQL表中唯一的值。 這是在MySQL中,但也歡迎使用其他數據庫。

mysql中沒有整數運算函數,因此您必須執行類似的操作。 假設您的列是varchar之類,您可以像這樣簡單

ORDER BY CASE WHEN field REGEXP '^-?[0-9]+$' THEN field ELSE '0'+field END

在Oracle中,您可以執行以下操作:

ORDER BY CASE WHEN column='K' THEN 0 ELSE TO_NUMBER(column) END

其他系統可能具有類似的構造。

如果需要對SELECT的結果進行排序,則可以只在ORDER BY語句中聲明自定義排序規則。

這是一個示例: http : //www.emadibrahim.com/2007/05/25/custom-sort-order-in-a-sql-statement/

這個想法是給每個項目分配自己的優先級。

請記住,它可能取決於實際的SQL Server。

這是在SQLite中工作的一種:

 select v1.* from (
   select t3.*, (case when value = 'K' then '0' else value end) normalized_val 
   from t3) v1 
 order by v1.normalized_val;

暫無
暫無

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

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