我有一个带有主键的数据表,通常采用$$$$#####$$
的格式,尽管有几个例外,没有数字。我想提取密钥的数字部分,然后使用它,这样我就可以生成唯一的主键。
因此,我创建了一个视图,其中包含仅显示数值的列,并忽略了任何无法转换为数字的项目。
当我编写查询以从视图中选择特定项目时,我得到了
将nvarchar值转换为数据类型时转换失败 中间体
并且看起来虽然我特别忽略了视图中的异常,但它们仍然是如何引用的。
非常感谢任何帮助。
马特
答案 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。
希望这个帮助