Здесь мне нужно проверить строку, которая находится в формате 'a,c,e
'. Эта ситуация возникла, когда пользователь выбрал несколько опций из флажка и в запросе, который мне нужен, чтобы проверить его с текущим столбцом.Проверить строку в инструкции select с помощью SQL Server 2008
Пример:
Учитывая строку:
'a,c,e'
Необходимо проверить данную строку каждое слово присутствует в колонке columnA
или нет:
columnA columnB
-------------------
a 1
b 2
c 3
d 4
e 5
f 6
g 7
h 8
Если a,c,e
присутствует в столбец columnA
он должен получить с помощью columnB
:
Ожидаемый результат:
columnA columnB
------------------
a 1
c 3
e 5
Моя попытка:
select columnA,columnB from
test where columnA ='a'
or columnA = 'c'
or columnA = 'e'
Я не чувствую! это оптимальный способ сделать это. И это также не хорошо для динамического запроса, когда значения строк становятся изменениями одновременно.
Этот вопрос в порядке. Это так же оптимально, как и будет, если в столбце A есть индексы. Альтернативно, его можно выразить как «где columnA IN ('a', 'c', 'e')'; но это будет * не * сделать его «более оптимизированным» .. и я понятия не имею, к чему относится «значение строки .. изменения одновременно». – user2864740
@ пользователь2864740, Yup! Огромное спасибо. – Meem
Метод будет работать, если на входе определен статический a, c, e .. но если вы говорите о динамическом вводе, то? – masum7