2017-02-08 63 views
0

什麼是存儲在SQL Server中的號碼最好的方式,這樣,如果我有很多像...存儲在SQL Server中逗號和句號(數據類型)的數量

192,234.35

它會被存儲爲這樣?

作爲數據類型的數字會有訣竅嗎?

+1

您不應該擔心存儲數字與千位分隔符,應該只是爲了顯示數據 – Lamak

+0

請區分存儲數據和顯示它們。您可以將該號碼存儲爲192234.35(數字類型)。而且你可以根據你的需要顯示它們。 – DVT

+0

@GurV以及我從excel電子表格中獲取一個值並將其存儲爲字符串,並希望能夠將其與sql server中的值進行比較。 – BobSki

回答

2

數值數據不存儲爲文本。我更喜歡小數,但任何東西都比文本好。這是一個簡單的想法來考慮。

declare @someDecimal decimal (8,2) = 192234.35 
declare @someText varchar(16) = '192,234.35' 

--here's how you would have to compare your text to an actual number 
select 'True' where @someDecimal = convert(decimal(8,2),replace(@someText,',','')) 

--then if you wanted to do any math on it, you would also have to convert it. 
select convert(decimal(8,2),replace(@someText,',','')) * 2 
--versus just 
select @someDecimal * 2 

--If you want to display it, use format... 
select FORMAT(@someDecimal,'#,0.0000') 

訂購你的數據是你會發現很大的問題,因爲它是由字符完成的。再次,這就是爲什麼你不把它作爲文本存儲。

declare @tableOfText table (d varchar(16)) 
insert into @tableOfText (d) 
values 
('001'), 
('010'), 
('10'), 
('110'), 
('011'), 
('1'), 
('12') 

select * from @tableOfText order by d desc 
+0

將它保存爲數字(18,2)似乎做的工作 – BobSki

1

我建議將它作爲十進制存儲。

在SQL Server 2012+我們有格式的功能,可用於與千個分隔符

FORMAT(@d,'#,0.0000') 

在以前版本的格式,我們可以求助於一些自定義功能

2

推薦的方法是將不帶逗號的數字存儲爲DECIMAL類型(假設有問題,192,234.35是單個數字),並將其顯示給用戶,只需添加逗號以使數字可讀。

不過,你可以自由地將其存儲像VARCHAR,如果你不打算做任何數學運算(如平均,總和等)

相關問題