我正在將資料從 Oracle 移動到 MS SQL 服務器。我正在TO_CHAR為金額欄位使用格式模塊,以使用 FM 將金額更改為所需的格式。我正在 SQL 服務器中尋找等效的函式來獲得相同的輸出。
甲骨文:
Select Amount, TO_CHAR(Amount, 'FM099999999V99MI') as Converted from Billing_table
輸出:
| 數量 | 轉換 |
|---|---|
| 0 | 00000000000 |
| 1985.56 | 00000198556 |
| 18.63 | 00000001863 |
| -258.93 | 00000025893- |
| -6.02 | 00000000602- |
uj5u.com熱心網友回復:
SQL Server 確實有format(),但請注意。由于性能問題,應謹慎使用它。
例子
Declare @YourTable table (Amount*100 decimal(15,2))
Insert Into @YourTable values
(0)
,(1985.56)
,(18.63)
,(-258.93)
,(-6.02)
Select Amount
,Converted = format(Amount*100,'00000000000;00000000000-')
From @YourTable
結果
Amount Converted
0.00 00000000000
1985.56 00000198556
18.63 00000001863
-258.93 00000025893-
-6.02 00000000602-
uj5u.com熱心網友回復:
可能有 100 種不同的方法來做到這一點。FORMAT()絕對看起來更干凈,更直觀,但像約翰一樣,由于性能開銷,我遠離它。
CREATE TABLE dbo.nums(val decimal(15,2));
INSERT dbo.nums(val) VALUES(0),
(1985.56),
(18.63),
(-258.93),
(-6.02);
SELECT val, RIGHT(REPLICATE('0',11)
RTRIM(CONVERT(int,100*ABS(val))),11)
CASE WHEN val < 0 THEN '-' ELSE '' END
FROM dbo.nums;
結果:
| 值 | (無列名) |
|---|---|
| 0.00 | 00000000000 |
| 1985.56 | 00000198556 |
| 18.63 | 00000001863 |
| -258.93 | 00000025893- |
| -6.02 | 00000000602- |
- 示例資料庫<>小提琴
uj5u.com熱心網友回復:
根據此答案和自定義格式字串,您可以使用:
with a as ( select * from(values (0), (1985.56), (18.63), (-258.93), (-6.0234), (-10)) as t(val) ) select val, /*Set explicit format with fixed decimal points*/ replace(format(val, '000000000.00;000000000.00-'), '.', '') as formatted, /*Explicit multiplication*/ format(val*100, '00000000000;00000000000-') as formatted2 from a GO價值 | 格式化 | 格式化2 --------: | :----------- | :----------- 0.0000 | 00000000000 | 00000000000 1985.5600 | 00000198556 | 00000198556 18.6300 | 00000001863 | 00000001863 -258.9300 | 00000025893- | 00000025893- -6.0234 | 00000000602- | 00000000602- -10.0000 | 00000001000- | 00000001000-
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/356370.html
標籤:sql-server 甲骨文 货币 到字符 格式模型
