2008-11-20 51 views
1

我收到一些存储过程的参数。这些参数是NVARCHAR的。SQLServer 2005 - 更改NVarChar中的字符

我有一个问题,当我需要将这些值中的一部分转换为FLOATS时,因为它们正在被接收。

@ VALUE1 NVARCHAR(100)

DECLARE @ChangedValue SET @ChangedValue = CAST(@值1 AS FLOAT)

例如@值1 =“0.001”

给了我一个问题,因为它希望“0.001”

我不能改变输入的格式,但我可以采用某种改变它的SQL服务器端?通过将所有“,”更改为“”。代替?

最好的问候,肯恩

回答

3

你可以使用@VALUE1 = REPLACE(@VALUE1, ',', '.')

这似乎一个可怕的事情做虽然!

0

由于米奇说这听起来不错,它会好得多,它所提供的参数是float类型的第一位。他给了你现在解决你的问题的解决方案,但是他指出你将来可能会遇到一些麻烦。

我假设程序被某些应用程序代码调用,我怀疑这些数字是用户输入。如果是这种情况,那么转换应该发生在应用程序级别上,因为这将处理区域设置,并且这是控制用户输入格式的唯一地方。

0

我对您的数据并不熟悉,但请确保您没有任何以逗号(例如1,000)有效的值。使用替换将其更改为1.000会大幅增加涉及的实际数量。

我会修复用户界面,以便无效的数字不能放在字段中。我还会在数据库中的表中对数据进行约束,要求数据在清除数据后需要在一定范围内或有效数字内。这种方式不好的数据不能进入现场开始。

相关问题