我有一个带有主键的数据表,其格式通常为$$$$#####$$
,尽管有一些没有数字的例外情况。我想提取键的数字部分,然后使用它,以便生成唯一的主键。
因此,我创建了一个视图,其中包含一个仅显示数值的列,并忽略了任何无法转换为数字的项目。
当我编写查询以从视图中选择特定项目时,我得到
将 nvarchar 值转换为数据类型 int 时转换失败。
并且看起来尽管我特别忽略了视图中的异常,但它们仍然以某种方式被引用。
任何帮助将不胜感激。
马特
我有一个带有主键的数据表,其格式通常为$$$$#####$$
,尽管有一些没有数字的例外情况。我想提取键的数字部分,然后使用它,以便生成唯一的主键。
因此,我创建了一个视图,其中包含一个仅显示数值的列,并忽略了任何无法转换为数字的项目。
当我编写查询以从视图中选择特定项目时,我得到
将 nvarchar 值转换为数据类型 int 时转换失败。
并且看起来尽管我特别忽略了视图中的异常,但它们仍然以某种方式被引用。
任何帮助将不胜感激。
马特
我想提取键的数字部分,然后使用它,以便生成唯一的主键。
使用这种最快的方法从 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
将您的列值传递给函数,然后将其转换为整数。在应用上述函数后,您可以创建另一个函数来转换此检查列值是否包含任何数值。
另一个参考。
希望这有帮助