Как установить переменную all в T-SQL?

#tsql #set #declare

Вопрос:

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

 DECLARE @sku AS VARCHAR(30)
SET @sku = 'ProductA'
 

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

 DECLARE @sku AS VARCHAR(30)
SET @sku = '%'
 

или

 DECLARE @sku AS VARCHAR(30)
SET @sku LIKE '%'
 

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

Добавлен:

 DECLARE @sku AS VARCHAR(30) = '%'
DECLARE @name AS VARCHAR(40) = '%'

select * from table1 
where sku = @sku 


select * from table2 
where sku = @sku 


select * from table3 
where name = @name
 

В основном в приведенном выше примере запроса я должен комментировать и раскомментировать предложение where в 3 разных таблицах. Есть ситуация, когда я помещаю значение в @sku сверху, и я могу использовать предложение where в операторах select. Для целей тестирования я должен прокомментировать операторы where, но для этого мне нужно сделать это в 3 разных запросах. Есть ли в любом случае, если бы я мог просто поместить фильтр сверху, вместо того чтобы комментировать все 3 предложения where. Имеет ли это смысл?

Комментарии:

1. Как бы вы хотели это использовать ?

2. Какова ваша конечная цель? Вы пытаетесь сделать что-то вроде совпадения, начинающегося с или заканчивающегося на основе значения переменной?

3. В основном моя цель состоит в том, чтобы установить переменную в%, где она показывает все переменные. То, как это работает в предложении where. Например, где артикул типа»%». Могу ли я сделать что-то подобное в переменной?

4. Что вы имеете в виду под «показать все переменные»? Как a возвращает все переменные, которые вы определили? SELECT DECLARE

Ответ №1:

Если ваша цель-использовать необязательное значение «все»для параметра, вы можете сделать это следующим образом:

 DECLARE @sku nvarchar(100) = '%'; -- or any other token

...
WHERE @sku IN (field, '%')
 

Это вычисляется следующим образом: если @артикул % , условие всегда верно и возвращает все строки.
Для любого другого значения он фильтрует только строки, в которых field значение равно параметру.

Комментарии:

1. Идеальный. Это сработало как заклинание. В любом случае, мы можем что-то сделать с целым числом? Должен ли я сначала преобразовать @sku и поле в целое число ?

2. На самом деле я все понял. Все, что мне нужно было сделать, это преобразовать оба в NVARCHAR. Еще раз спасибо @KekuSemau за ваше время и помощь. Ценю это.