Напишите процедуру, чтобы проверить, существуют ли строки для каждого значения, разделенного запятыми, или нет - PullRequest
0 голосов
/ 18 июня 2020

Код ниже работает только по стоимости. Но я хотел проверить и с другими значениями, существует ли строка или нет.

 IF EXISTS (select * from dbo.Params where Value in ('Z111'))
    BEGIN
        Print 'True';
    END;
    ELSE
    BEGIN
    Print 'False';
       -- INSERT HERE
    END

Предположим, я проверяю с двумя разными значениями, то есть «Z111» и «P111». Для одного значения в таблице нет строки, а для другого значения нет. Как отличить. На самом деле я хочу вставить значение для тех, чья запись отсутствует.

IF EXISTS (select * from dbo.Params where Value in ('Z111,P111'))

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Условие работает нормально; вы просто не понимаете разницы между одним строковым значением, содержащим запятую, и несколькими значениями. Желаемое logi c лучше всего записать как:

IF EXISTS (select * from dbo.Params where Value in ('Z111', 'P111'))

Если это передается как значение, вы можете либо разделить строку:

IF EXISTS (select * from dbo.Params where Value in (select value from string_split(@param))

Или используйте LIKE:

IF EXISTS (select * from dbo.Params where ',' + @param + ',' LIKE '%,' + Value + ',%')
0 голосов
/ 18 июня 2020

Вы можете использовать функцию STRING_SPLIT

INSERT INTO dbo.Params(Value)
SELECT Value
FROM string_split('Z111,P111',',') as MV
WHERE NOT EXISTS (SELECT 1 FROM dbo.Params p WHERE p.Value = MV.Value)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...