在許多 SQL 方言中,它們支持[NULLS {FIRST | LAST}]. 為什么它們對ORDER BY用于排序空字串的擴展不是相同的,我經常發現自己想要推到開頭或結尾。例如,在以下列:
`name`
NULL
"tom"
"alex"
""
"zack"
我可以看到自己想要按以下方式排序:
NULL
"alex"
"tom"
"zack"
""
在這種情況下,能夠做到這一點會很好:
ORDER BY name NULLS FIRST EMPTY_STRING LAST
或者它們都在末尾(空字串之前的空值):
ORDER BY name NULLS LAST EMPTY_STRING LAST
SQL中是否有這樣的結構?或者它只允許NULL快捷方式?
uj5u.com熱心網友回復:
對于 Sql 服務器,您可以使用 xx_BIN 排序規則來控制順序。例如varchar列,首先是 NULL,最后是空字串:
order by name char(0xff) collate Latin1_General_Bin
uj5u.com熱心網友回復:
你可以使用NULLIF:
ORDER BY NULLIF(name, '') NULLS LAST
uj5u.com熱心網友回復:
SQL Server 沒有空字串 last 函式。您可以將空字串轉換為 NULL,或者您需要創建自定義排序。
--This will treat blank values as NULLs
ORDER BY
CASE
WHEN name = '' THEN NULL
ELSE name
END NULLs LAST
或者
--This custom order will put blanks first and nulls last
ORDER BY
CASE
WHEN name = '' THEN 1
ELSE 2
END
,name NULLs LAST
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/349931.html
標籤:sql
上一篇:雪花中的值
