将 nvarchar 转换为 int,将 phone 转换为仅包含数字的符号
Converting nvarchar to int, converting phone with symbols with only numbers
我正在尝试从 table 'Clients' 中转换 'phone' 列中的 phone 数字。我尝试了以下语法,但仍然收到错误消息 -
1. SELECT CAST(phone as int)
FROM Clients
错误:将 nvarchar 值“030-3456789”转换为数据类型 int 时转换失败
2. SELECT CONVERT(int, phone)
FROM Clients
将 nvarchar 值“030-3456789”转换为数据类型 int 时转换失败。
3. SELECT CAST(phone AS BIGINT)
FROM Clients
WHERE ISNUMERIC(phone) = 1
查询没有return错误但没有结果,该列为空。
因为至少你的一些记录不能默认转换为数字,如指示的那样030-3456789
您基本上需要 replace/eliminate 中间的破折号:
SELECT cast(replace('12-3', '-', '') as int)
无论如何,欢迎来到 Whosebug。
看起来(从您的示例语法来看)您可能正在使用 SQL 服务器。
如果是这样,并且是 2017 年以后,您可以执行以下操作来处理 non-numeric 值的任意组合。
根据您的意见,以下应该有效
select Try_Convert(bigint, Replace(Translate('(5) 789-0123','()-',' '),' ',''))
Result: 57890123
如果您使用的是 SQL Server 2016 或更早版本,您必须嵌套多个替换项:
select Try_Convert(bigint, Replace(Replace(Replace(Replace('(5) 789-0123)','-',''),'(',''),')',''),' ',''))
我正在尝试从 table 'Clients' 中转换 'phone' 列中的 phone 数字。我尝试了以下语法,但仍然收到错误消息 -
1. SELECT CAST(phone as int)
FROM Clients
错误:将 nvarchar 值“030-3456789”转换为数据类型 int 时转换失败
2. SELECT CONVERT(int, phone)
FROM Clients
将 nvarchar 值“030-3456789”转换为数据类型 int 时转换失败。
3. SELECT CAST(phone AS BIGINT)
FROM Clients
WHERE ISNUMERIC(phone) = 1
查询没有return错误但没有结果,该列为空。
因为至少你的一些记录不能默认转换为数字,如指示的那样030-3456789 您基本上需要 replace/eliminate 中间的破折号:
SELECT cast(replace('12-3', '-', '') as int)
无论如何,欢迎来到 Whosebug。
看起来(从您的示例语法来看)您可能正在使用 SQL 服务器。
如果是这样,并且是 2017 年以后,您可以执行以下操作来处理 non-numeric 值的任意组合。
根据您的意见,以下应该有效
select Try_Convert(bigint, Replace(Translate('(5) 789-0123','()-',' '),' ',''))
Result: 57890123
如果您使用的是 SQL Server 2016 或更早版本,您必须嵌套多个替换项:
select Try_Convert(bigint, Replace(Replace(Replace(Replace('(5) 789-0123)','-',''),'(',''),')',''),' ',''))