nvarchar 到整数转换错误
nvarchar into integer conversion error
我正在尝试将一列邮政编码转换为整数,但即使我正确地转换了该列,我仍收到转换错误:
with zips as (
select id ,cast(replace(replace(left(ltrim(Zip_Code),5), '-', ''), char(32), '0') as int) as zip_clean
from table1)
select * from zips
where zip_clean in
(19116,
94595,
60062)
我上面的嵌套转换函数有什么问题吗?
既然我认为这回答了你的问题,我将把我的评论移到这里。
这意味着您的 replace
函数没有涵盖 Zip_Code 中的所有可能场景。试试
SELECT Zip_Code FROM TABLE1
WHERE ISNUMERIC(replace(replace(left(ltrim(Zip_Code),5), '-', ''), char(32),
'0')) = 0
我认为您的查询是正确的,但没有考虑到一些无效的 zip。我会尝试 运行 下面的 return 非数字值。那么您可能需要手动修复这些问题或以其他方式处理它们。
SELECT *
FROM YourTable
WHERE ISNUMERIC(replace(replace(left(ltrim(zip_code),5), '-', ''), char(32), '0')) = 0
我正在尝试将一列邮政编码转换为整数,但即使我正确地转换了该列,我仍收到转换错误:
with zips as (
select id ,cast(replace(replace(left(ltrim(Zip_Code),5), '-', ''), char(32), '0') as int) as zip_clean
from table1)
select * from zips
where zip_clean in
(19116,
94595,
60062)
我上面的嵌套转换函数有什么问题吗?
既然我认为这回答了你的问题,我将把我的评论移到这里。
这意味着您的 replace
函数没有涵盖 Zip_Code 中的所有可能场景。试试
SELECT Zip_Code FROM TABLE1
WHERE ISNUMERIC(replace(replace(left(ltrim(Zip_Code),5), '-', ''), char(32),
'0')) = 0
我认为您的查询是正确的,但没有考虑到一些无效的 zip。我会尝试 运行 下面的 return 非数字值。那么您可能需要手动修复这些问题或以其他方式处理它们。
SELECT *
FROM YourTable
WHERE ISNUMERIC(replace(replace(left(ltrim(zip_code),5), '-', ''), char(32), '0')) = 0