我在存储过程中收到一些参数。这些参数是 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 会极大地改变实际涉及的数字。

我将修复用户界面,以便无法在字段中放置无效的数字。我还会对数据库中的表施加约束,要求清理数据后数字必须在一定范围内或有效数字。这样一来,不良数据就无法进入现场。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top