Ошибка преобразования при преобразовании значения varchar '|' к типу данных int - PullRequest
0 голосов
/ 17 марта 2020

Ввод - это таблица из одной строки или нескольких строк с 7 столбцами информации. Я хочу превратить эти 7 столбцов в таблицу из нескольких строк с повторением первого столбца и еще двух столбцов, второго с компонентом ID и третьим столбцом. the componentLength.

Вот оригинальный вопрос ниже.

  SELECT
        (CASE 
            WHEN SpecificationID = '889' AND RTTopEntryLength > '0' AND RTSideEntryLength > '0' 
               THEN CONVERT(varchar, (infill_id + '|' + infill_id + '|' + infill_id))
            WHEN SpecificationID = '889' AND RTTopEntryLength = '0' AND RTSideEntryLength > '0' 
               THEN CONVERT(varchar, (infill_id + '|' + infill_id))
            WHEN SpecificationID = '889' AND RTTopEntryLength > '0' AND RTSideEntryLength = '0' 
               THEN CONVERT(varchar, (infill_id + '|' + infill_id))
            ELSE CONVERT(varchar, infill_id) 
         END) AS 'InfillIDList'
    FROM 
        INFILLTABLE
    WHERE 
        SpecificationID = '889'

Я получаю эту ошибку:

Msg 245, Level 16, State 1, Line 1  
Conversion failed when converting the varchar value '|' to data type int.

Что мне здесь не хватает? Я конвертирую всю строку в Varchar. Почему при попытке преобразования в целое число снова возникает ошибка?

1 Ответ

2 голосов
/ 17 марта 2020

Он пытается обработать это: (infill_id + '|' + infill_id) и получает ошибку. Вы можете реализовать тот же результат: select 3+'jj'+2, вы увидите сообщение: Преобразование не удалось при преобразовании значения varchar 'jj' в тип данных int.

Измените (infill_id+'|'+infill_id) на concat(infill_id,'|',infill_id)

(и он пытается оценить как int до , он преобразует результат в varchar)

Если вам действительно интересно, почему вы можете прочитать здесь: https://docs.microsoft.com/en-us/sql/t-sql/data-types/data-type-precedence-transact-sql?view=sql-server-ver15

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