0

我有一个带有主键的数据表,其格式通常为$$$$#####$$,尽管有一些没有数字的例外情况。我想提取键的数字部分,然后使用它,以便生成唯一的主键。

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

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

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

并且看起来尽管我特别忽略了视图中的异常,但它们仍然以某种方式被引用。

任何帮助将不胜感激。

马特

4

1 回答 1

0

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

使用这种最快的方法从 SQL Server 中的 VARCHAR 中删除非数字字符

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

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

另一个参考

希望这有帮助

于 2012-08-16T11:12:25.640 回答