Ошибка преобразования при преобразовании значения nvarchar '2151', '1886' в тип данных int - PullRequest
0 голосов
/ 07 мая 2020

У меня есть запрос ниже

  DEClare @Plan_ID nvarchar(100)
  set @Plan_ID=REPLACE('2151,1886',',',''',''') 

и

SELECT distinct  Plan_Dict_Id from REF_Plan_Dictionary WHERE 
   CAST(Plan_Dict_Id as int) in (@Plan_ID),

Пожалуйста, помогите, Plan_Dict_Id тип данных INT, я хочу передать значения куда, но получаю error «Ошибка преобразования при преобразовании varchar значения '2151', '1886' в тип данных int.»

1 Ответ

0 голосов
/ 07 мая 2020

Если это одна из более поздних версий SQL Server, вы можете сделать что-то вроде этого ...

DECLARE @Plan_ID nvarchar(100) 
SET @Plan_ID= '2151,1886'

SELECT DISTINCT Plan_Dict_Id 
    FROM REF_Plan_Dictionary d
        JOIN string_split(@Plan_ID, ',') s ON d.Plan_Dict_Id = s.[value]

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

DEClare @Plan_ID nvarchar(100) set @Plan_ID=REPLACE('2151,1886',',',''',''') 
DECLARE @sql nvarchar(max)
SET @SQL = 'select distinct Plan_Dict_Id from REF_Plan_Dictionary where CAST(Plan_Dict_Id as int) in (''' + @Plan_ID + ''')'
EXEC (@sql)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...