Преобразование nvarchar в int, isnumeric возвращает 0 для числа

У меня есть временная таблица с типом данных NVARCHAR, которую мне нужно перенести в таблицу с типом данных INTEGER.

У меня есть две таблицы NVARCHAR, которые должны быть INTEGER, одна работает, а другая выдает ошибку,

Conversion failed when converting the nvarchar value '9824
' to data type 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
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
0
184
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Вместо cast() используйте `try_cast ()

SELECT TRY_CAST(table_name AS integer)
FROM OLTP.table

Это производит NULL, что происходит, если данные не являются целыми числами, но это так.

Galeaettu 24.05.2018 23:44
  SELECT  PARSE(column_name AS int )  from table

Tested

Ответ принят как подходящий

У вас, вероятно, есть разрыв строки, 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))

Я бы проверил длину. Это даст вам представление о том, сколько специальных символов вы ищете.

SELECT LEN(Revenue)
FROM OLTP.ExtractedData

Затем используйте SUBSTRING и ASCII, чтобы узнать, что это за персонаж.

SELECT 
  ASCII(SUBSTRING(Revenue, 5, 1))
FROM OLTP.ExtractedData

Другие вопросы по теме