Преобразование значения varchar переполнило столбец int сервером sql. - PullRequest
0 голосов
/ 16 октября 2018

Преобразование значения varchar '82332617284' переполнило столбец int.

У меня есть такие данные, как

BreakID = 82332617284

Таким образом, у меня есть строка кода, чтобы извлечь только число,так это выглядит следующим образом:

join dst.ExceptionsDST d on f.BreakOwnerId = replace(substring(d.dstbreakid,charindex('=',d.dstbreakid) + 1,99),' ','')

Что мне нужно сделать, чтобы просто вытащить числа и выполнить объединение, не получив этой ошибки?

Это определенно что-то с этимчасть

replace(substring(d.dstbreakid,charindex('=',d.dstbreakid) + 1,99),' ','')

Ответы [ 3 ]

0 голосов
/ 16 октября 2018

Понятно, что вы цените bigint.Тип данных Int не может его удержать.

Например, я пытаюсь вставить ваше значение #t типа int.В конечном итоге с той же ошибкой

create table #t (id int)
insert into #t values(82332617284)

, но это не ошибка, потому что это bigint.

create table #t1 (id bigint)
insert into #t1 values(82332617284)

Так что если вы можете изменить свой код, как показано ниже,

join dst.ExceptionsDST d on  f.BreakOwnerId = CAST(replace(substring(d.dstbreakid,charindex('=',d.dstbreakid) + 1,99),' ','') as Bigint)
0 голосов
/ 16 октября 2018

Вы можете использовать TRY_CONVERT, чтобы избежать этой ошибки:

SELECT dstbreakid, TRY_CONVERT(INT, SUBSTRING(d.dstbreakid, CHARINDEX('=', d.dstbreakid) + 1, 99))
FROM (VALUES
    ('x = 82332617284 '),
    ('x = 823326172 ')
) d(dstbreakid)

Вывод:

| dstbreakid      | (No column name) |
|-----------------|------------------|
| x = 82332617284 | NULL             |
| x = 823326172   | 823326172        |

Если f.BreakOwnerId имеет тип данных int, тогда он не может содержать значение823326172.

0 голосов
/ 16 октября 2018

int слишком маленький тип данных для вашего номера.Вам придется избавиться от таких больших чисел или изменить тип данных столбца на bigint.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...