2009-10-11 57 views
0

錯誤的列名稱語法是[My Column]而不是My Column,這會導致錯誤。如何在SQL命令中包含值?

無錯誤的字符串值語法是'25,00'而不是25,00這會導致錯誤。

如果列數據類型是數字,我得到一個錯誤使用單引號將值括起來。有沒有其他方法可以安全地爲字符串或數字數據類型封裝值?

+0

你使用什麼SQL服務器? – 2009-10-11 01:12:40

+0

它必須是某種形式的MS SQL Server - AFAIK它是唯一一個使用非標準(在ISO 9075中不受制裁)的服務器,它將方括號中的名稱括起來。在任何其他服務器(Sybase可能除外)中,這並不是沒有錯誤保證的錯誤。 SQL標準使用雙引號將分隔的標識符和圍繞字符串的單引號括起來。 – 2009-10-11 01:46:26

回答

2

數字值沒有任何外殼或逗號。

對於字符串,根據您的設置,在某些數據庫中可能是單引號或雙引號。

0

列名稱如My Column由於其中的空間而導致錯誤。 [My Column]消除了歧義。

諸如'25,00'之類的值是有效的,因爲引號使其成爲字符串,而25,00由於逗號而不是有效數字(至少不在您的世界範圍內)。

如果你要插入25,00爲一個數字,怎麼是DB能夠從數字區分呢?

1

在SQL Server中,Cast/Convert函數是區域意識。因此,在您的查詢中使用Convert,將該數字作爲帶引號的字符串傳遞,以將其轉換爲所需的十進制類型。例如:

SELECT CONVERT(decimal(5,2),'1234,56') 
+0

我相信這是錯誤的。就我所知,SQL Server從不使用區域設置來解釋小數點分隔符。你是否真的在歐洲安裝上測試了這個CONVERT語句,並發現它成功了? – 2009-10-11 01:40:12

1

由於字符串「25,00」不是有效的十進制數,因此使用引號時可能會出現錯誤。檢查您的RDBMS文檔以查看字符串是如何隱式轉換爲數字類型的。

沒有引號,25,00也是無效的,我相信,無論你的位置。 SQL標準不允許使用逗號作爲小數點分隔符來指定文字數字。

相關問題