У меня есть некоторые динамические значения c SQL, которые я использую, чтобы увидеть, есть ли определенное свойство для определенного клиента в таблице. Если это так, он вернет значение, если нет, он вернет ноль. Однако я хотел бы, чтобы он возвращал значение по умолчанию, если свойство не найдено.
Таблица:
CREATE TABLE [test].[customers](
[customer] [nvarchar](256) NULL,
[key_name] [nvarchar](256) NULL,
[key_value] [nvarchar](256) NULL
)
GO
INSERT INTO [test].[customers]
([customer]
,[key_name]
,[key_value])
VALUES
('JohnDoe'
,'periodlength'
,'3')
GO
Dynami c SQL:
declare @customer as nvarchar(256) = 'JohnDoe'
declare @table as nvarchar(256) = 'test.customers'
declare @sql as nvarchar(4000)
set @sql = 'select [key_value] from ' + @table + ' where [key_name]= ''periodlength'' and customer= ''' + @customer + ''''
exec sp_executesql @sql
Так что, когда вы спрашиваете у Джона Доу, вы получите результат 3, который идеально подходит. Тем не менее, я хотел бы вернуть 1 для Джейн Доу. Итак, я думал по линии IF exec sp_executesql @sql IS NULL 1 ELSE exec sp_executesql @sql
, но это не работает.
Как изменить мой динамический c запрос, чтобы он возвращал значение по умолчанию, если свойство не найдено?