SQLServer 2005 - 更改 NVarChar 中的字符
-
08-07-2019 - |
题
我在存储过程中收到一些参数。这些参数是 NVARCHAR 的。
当我需要将其中一些值转换为 FLOATS 时,我遇到了问题,因为它们被接收为例如
@VALUE1 NVARCHAR(100)
声明@changedvalue set @changedvalue = cast( @value1作为float)
例如。@值1 =“0,001”
给我一个问题,因为它期望“0.001”
我无法更改输入的格式,但我可以以某种方式在 SQL 服务器端更改它吗?通过将所有“”更改为“”。反而?
最好的问候,肯恩
解决方案
你可以使用 @VALUE1 = REPLACE(@VALUE1, ',', '.')
但这看起来确实是一件可怕的事情!
其他提示
正如 Mitch 所说,这听起来不太好,如果提供的参数首先是 float 类型会更好。他为您提供了暂时解决您问题的解决方案,但正如他指出的那样,您将来可能会遇到一些麻烦。
我假设该过程是由某些应用程序代码调用的,并且我怀疑这些数字是用户输入的。如果是这种情况,那么转换应该发生在应用程序级别,因为这将处理区域设置,并且这是唯一可以控制用户输入格式的地方。
我不熟悉您的数据,但请确保您没有任何使用逗号有效的值,例如 1,000。使用替换将其更改为 1.000 会极大地改变实际涉及的数字。
我将修复用户界面,以便无法在字段中放置无效的数字。我还会对数据库中的表施加约束,要求清理数据后数字必须在一定范围内或有效数字。这样一来,不良数据就无法进入现场。
不隶属于 StackOverflow