示例1:對于customer id = 1420730(7位數),我們應該顯示01420730
示例2:對于customer id = 999999 (6 digits), 我們應該顯示00999999
注意:Customer id是INT資料型別,它應該在做了修改后仍然是INT資料型別
uj5u.com熱心網友回復:
你可以使用format():
select format(customerid, '0000000')
注意,結果是一個字串,而不是一個數字。 數字沒有前導零。
uj5u.com熱心網友回復:
更復雜,但我對FORMAT()望而卻步,因為CLR的開銷可能很大:
SELECT RIGHT( '0000000' CONVERT(varchar(11)。[客戶ID]), 8)
FROM dbo.tablename。
但這引出了一個問題......當你上了黑客新聞的頭條,你又有了9900萬的用戶,你會怎么做?或者你不得不改成bigint?
- 舉例說明。db<>fiddle/a>
這可以被持久化(但更多的時候,人們想要一個持久化的列,原因是錯誤的):
CREATE TABLE dbo.tablename
(
[客戶ID] int,
PaddedCustomerID AS CONVERT(char(8)。
RIGHT('0000000' ) operator"> CONVERT(varchar(11) 。[客戶ID]), 8)))
持續性的
);
但在這兩種情況下,SQL Server都不可能將這個填充的數字視為一個整數。你可以保留這些 0 的唯一方法是將其存盤為字串。這種呈現格式化是在呈現值的呈現層中處理得更好的事情--以這種方式(無論是否持久化)存盤它們幾乎沒有什么好處。
如果持久化該列是一個需求,那么應該在你的問題中提及。改變需求是不公平的,尤其是在用戶已經解決了所述問題的情況下。請閱讀關于變色龍的問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/311080.html
標籤:
