将数据类型nvarchar转换为bigint时出错-值转换

时间:2018-10-31 22:25:18

标签: sql sql-server tsql ssms

执行查询时出现此错误:

SELECT DISTINCT
    sub.[IP Address],
    sub.IPAddressToInteger,
    bt.Subnet
FROM
    (SELECT DISTINCT
         [IP Address],
         [dw].[IPAddressToInteger] ([IP Address]) AS IPAddressToInteger
     FROM 
         dw.vw_Device dd
     WHERE 
         [IP Address] <> NULL) sub
LEFT JOIN 
    dw.btdiamond bt ON sub.IPAddressToInteger BETWEEN bt.startipaddressinteger AND bt.endipaddressinteger

查询使用将IP地址转换为整数的函数。

这允许将IP地址与子网匹配。

我猜是这个错误的原因,也许[IP地址]包含NULL,+,-等值。

如何选择发生错误的所有行?

然后结束如何消除这些错误?

更新: 这是功能:Function

1 个答案:

答案 0 :(得分:0)

不是100%清楚您需要什么...如果您想要一个不会积蓄意外字符的函数,则需要发布该函数代码。 如果您希望能够识别出具有意外字符的行,那么可以对其进行修复...您可以使用类似以下的内容...

SELECT 
    *
FROM
    dbo.BaseTable bt
WHERE 
    bt.IP_Address LIKE '%[^0-9.]%';