将nvarchar值转换为数据类型int时转换失败

时间:2012-08-16 11:01:48

标签: sql-server tsql

我有一个带有主键的数据表,通常采用$$$$#####$$的格式,尽管有几个例外,没有数字。我想提取密钥的数字部分,然后使用它,这样我就可以生成唯一的主键。

因此,我创建了一个视图,其中包含仅显示数值的列,并忽略了任何无法转换为数字的项目。

当我编写查询以从视图中选择特定项目时,我得到了

  

将nvarchar值转换为数据类型时转换失败   中间体

并且看起来虽然我特别忽略了视图中的异常,但它们仍然是如何引用的。

非常感谢任何帮助。

马特

1 个答案:

答案 0 :(得分:0)

  

我想提取密钥的数字部分然后使用它,所以我可以   生成唯一的主键。

使用此Fastest way to remove non-numeric characters from a VARCHAR in SQL Server

CREATE Function [fnRemoveNonNumericCharacters](@strText VARCHAR(1000))
RETURNS VARCHAR(1000)
AS
BEGIN
    WHILE PATINDEX('%[^0-9]%', @strText) > 0
    BEGIN
        SET @strText = STUFF(@strText, PATINDEX('%[^0-9]%', @strText), 1, '')
    END
    RETURN @strText
END

将列值传递给函数,然后将其转换为整数。您可以创建另一个函数来转换此检查,以确定在应用上述函数后列值是否包含任何数值。

另一个Reference

希望这个帮助