nvarchar в ошибку преобразования целых чисел - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь преобразовать столбец почтовых индексов в целые числа, но я получаю ошибку преобразования, даже когда я правильно преобразовал столбец:

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)

Что-то не так с моей вложенной функцией приведения выше?

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

Я думаю, что ваш запрос правильный, но не учитывает неправильный почтовый индекс.Я хотел бы попробовать запустить ниже, который будет возвращать значения, которые не являются числовыми.Тогда вам, возможно, придется исправить это вручную или обработать их другим способом.

SELECT *
FROM YourTable
WHERE ISNUMERIC(replace(replace(left(ltrim(zip_code),5), '-', ''), char(32), '0')) = 0
0 голосов
/ 22 мая 2018

Так как я думаю, что это ответ на ваш вопрос, я собираюсь переместить мой комментарий сюда.

это означает, что ваши replace функции не охватывают все возможные сценарии в Zip_Code.Попробуйте с

 SELECT Zip_Code FROM TABLE1
    WHERE ISNUMERIC(replace(replace(left(ltrim(Zip_Code),5), '-', ''), char(32), 
    '0')) = 0
...