2009-10-11 117 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标准不允许使用逗号作为小数点分隔符来指定文字数字。

相关问题