2013-07-04 35 views
1

我試圖插入列在SQL服務器2008 R2的值的問題:SQL Server 2008中:當數據插入到表

Create table Test 
(
    Age varchar(3) NOT NUll 
) 

insert into test value ('030') 

Output: 
30 

時,我在Sybase想同樣的事情:

Output:030 

關注: 我需要在Sql Server 2008R2中保持'0',因爲它會在生成的輸出文件中創建一些格式化問題。 任何建議如何保留。

+1

你應該真的糾正你的問題的語法,所以它實際上運行。我試圖在SQL Server 2008 R2上,它插入'030'就好了,所以你的前導零消失的原因不是SQL服務器。也許你用來查詢的工具剝離它? – alun

回答

1

的語法SQL2008是有點不同,{}變得()insert into [tablename] value()成爲insert into [tablename] values()

因此使其工作在SQL2008。

Create table Test 
(
    Age varchar(3) NOT NUll 
) 
insert into test values ('030') 
SELECT * FROM test 

順便說一句,爲什麼你使用varchar而不是char?

+0

對不起!我錯誤地把{}放在這裏,我正在使用()在SQL Server 2008R2中,但面臨同樣的問題。實際上,它是爲sybase設計的一些預製腳本,所以我使用相同的sql server.so,我知道他們爲什麼使用varchar而不是char。作爲@alun詢問的 – Praveenks

+0

,你在使用SSMS還是其他工具。我嘗試了SSMS,並返回030 –

+0

好吧,我剛剛發現答案..我越來越30因爲我把030沒有引號..但只是想知道爲什麼它沒有給出任何錯誤? – Praveenks

0

不帶引號的'030'只是被sql server解釋爲整數30。 此外,當您嘗試在varchar字段中插入整數時,它會很好地插入它,因爲varchar字段接受任何字母數字值。 但是,這樣做可能會引發錯誤,因爲varchar不能總是轉換爲整數。

相關問題