SQLServer 2005 - 更改NVarChar中的字符

时间:2008-11-20 09:51:25

标签: sql-server character nvarchar

我在存储过程中收到一些参数。这些参数是NVARCHAR的。

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

@ VALUE1 NVARCHAR(100)

DECLARE @ChangedValue SET @ChangedValue = CAST(@ Value1 AS FLOAT)

E.g。 @ Value1 =“0,001”

给我一​​个问题,因为它预计会有“0.001”

我无法更改输入的格式,但我可以在SQL服务器端以某种方式更改它吗?通过将所有“,”更改为“。”代替?

最好的问候,肯恩

3 个答案:

答案 0 :(得分:3)

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

这确实是一件可怕的事情!

答案 1 :(得分:0)

正如Mitch所说听起来不那么好,而且提供的参数首先是float类型会更好。他给你的解决方案现在解决了你的问题,但正如他指出的那样,你可能会在将来遇到麻烦。

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

答案 2 :(得分:0)

我不熟悉您的数据,但请确保您没有任何对逗号有效的值,例如1,000。使用replace将其更改为1.000会大大改变实际数量。

我会修复用户界面,以便无法在字段中放置无效数字。我还会在数据库中的表上设置一个约束,要求数据在一定范围内,或者在清理数据后需要有效数字。那样糟糕的数据就无法开始进入该领域。