我有一个数据类型为NVARCHAR
的临时表,我需要将其迁移到数据类型为INTEGER
的表。
我有两个NVARCHAR
表,需要INTEGER
,一个正在运行而另一个正在发出错误,
转换nvarchar值'9824时转换失败 '到数据类型int。
我尝试使用LTRIM
和RTRIM
删除多余的空格,但ISNUMERIC()
仍为0,错误保持不变。
这是导致错误的代码,
SELECT CAST(table_name AS integer)
FROM OLTP.table
我尝试了什么:
SELECT ISNUMERIC(REPLACE(Revenue, ' ', '')), Revenue, ISNUMERIC(REPLACE(LTRIM(RTRIM(Revenue)), ' ', ' '))
FROM OLTP.ExtractedData
样本数据
(No column name) Revenue (No column name)
0 9824 0
0 5661 0
0 3250 0
0 2959 0
0 2511 0
0 2072 0
0 2056 0
0 1705 0
0 1704 0
答案 0 :(得分:1)
你可能在那里有一个换行符,TRIM / RTRIM不会修剪它们。
declare @value nvarchar(10) = '1234
'
select ISNUMERIC(Replace(CHAR(9), '', @value))
select ISNUMERIC(Replace(CHAR(10), '', @value))
select ISNUMERIC(Replace(CHAR(13), '', @value))
select ISNUMERIC(Replace(CHAR(32), '', @value))
答案 1 :(得分:0)
而不是cast()
使用`try_cast()
SELECT TRY_CAST(table_name AS integer)
FROM OLTP.table
答案 2 :(得分:0)
答案 3 :(得分:0)
我会检查长度。这将让您了解您正在寻找多少特殊字符。
SELECT LEN(Revenue)
FROM OLTP.ExtractedData
然后使用SUBSTRING
和ASCII
找出角色是什么。
SELECT
ASCII(SUBSTRING(Revenue, 5, 1))
FROM OLTP.ExtractedData