Как манипулировать оператором SQL IN для возврата всех значений в результате - PullRequest
0 голосов
/ 05 ноября 2019

Я работаю над кодом Java, единственной целью которого является отображение всех данных из таблицы базы данных.

Запрос на выборку данных таблицы из базы данных записан в jar.

Структура таблицы примерно такая:

Column1  Column2  City 
Dummy    Dummy    abc
Dummy    Dummy    xyz
Dummy    Dummy    pqr
Dummy    Dummy    ALL

Раньше команда sql в jar выглядела так:

  select * from table;

Но теперь в более новой версии jarзапрос выглядит так:

select * 
from table 
where city In ( variable ,'All');

Переменная заполняется во время выполнения и является строковой переменной.

Теперь проблема в том, что у меня нет никакого контроля над флягой и яничего не могу изменить в нем.

И моя цель остается той же, чтобы отобразить все в таблице. **

Я попытался вставить ' ' (пусто) в команду, но она возвращаеттолько строки с городом как ALL.

Так есть ли какой-нибудь способ, которым я могу получить все строки в результате, используя оператор IN, ИЛИ я должен вернуться к предыдущему банку с простым запросом select.

Ответы [ 2 ]

0 голосов
/ 05 ноября 2019

Здесь вы можете передать динамическое или динамическое значение в запросе.

DECLARE @ParameterDefinition NVARCHAR(MAX) 
 SET @ParameterDefinition = '@P_Filter NVARCHAR(MAX)';

DECLARE @SQL  NVARCHAR(MAX);
DECLARE @Filter  NVARCHAR(MAX) = '' //set here filter value

SET  @SQL = 'select * from table where city In (@P_Filter);'

EXECUTE sp_executesql @SQL, @ParameterDefinition,
@P_Filter = @Filter

ИЛИ передать значение, используя STRING_SPLIT Function

select * from table where city In (STRING_SPLIT([FILTER_VALUE]));

Для получения более подробной информации перейдите по этой ссылке Нажми меня

0 голосов
/ 05 ноября 2019

Попробуйте это:

 select * 
 from table 
 where city in (select city from table)
...