Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Можно ли как-то объединить много логических условий?  [new]
qwertyqwertyz
Guest
Здравствуйте! Подскажите, пожалуйста
Есть таблица programma

нужно вывести столбец [programma] если в одном из столбцов, начинающихся с "obj" есть значение 'объект_45'
set CONCAT_NULL_YIELDS_NULL OFF 
select [programma] from dbo.programma where 
      [obj_1] LIKE 'объект_45' 
OR  [obj_2] LIKE 'объект_45' 
OR  [obj_3] LIKE 'объект_45' 
OR  [obj_4] LIKE 'объект_45' 
OR  [obj_5] LIKE 'объект_45' 
OR  [obj_6] LIKE 'объект_45' 
OR  [obj_7] LIKE 'объект_45' 
OR  [obj_8] LIKE 'объект_45' 
OR  [obj_9] LIKE 'объект_45' 
OR  [obj_10] LIKE 'объект_45' 

и т.д.

Может можно как-то короче сделать запрос? Вдруг таких полей станет больше 13

К сообщению приложен файл. Размер - 5Kb
28 мар 17, 12:12    [20340756]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли как-то объединить много логических условий?  [new]
aleks2
Guest
Что может быть проще?

Перепроектируй таблицу в соответствии с заветами реляционной теории.
И будет тибе щастье.
28 мар 17, 12:19    [20340792]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли как-то объединить много логических условий?  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
SELECT [programma]
FROM dbo.programma
WHERE EXISTS
(
 SELECT *
 FROM
 (
  VALUES
  ([obj_1])
 ,([obj_2])
 ,([obj_3])
 ,([obj_4])
 ,([obj_5])
 ,([obj_6])
 ,([obj_7])
 ,([obj_8])
 ,([obj_9])
 ,([obj_10])
 ) T(F)
 WHERE T.F='объект_45'
);
Короче?

Если вы LIKEом ищете подстроку, содержащую символ подчёркивания,
то надо учесть, что это спецсимвол, означающий "один любой символ".
Так что у вас неправильно. Надо так:
LIKE 'объект[_]45'
28 мар 17, 12:26    [20340824]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли как-то объединить много логических условий?  [new]
s_ustinov
Member

Откуда: Munchen, DE
Сообщений: 2202
aleks2
Перепроектируй таблицу в соответствии с заветами реляционной теории.

+1
Видел как то таблицу (приложение для резервирования номеров в отеле) с полями:
Room_1
Room_2
...
Room_250

По какой-то причине приложение работало не очень хорошо, и его отдали на рефакторинг...
28 мар 17, 12:26    [20340826]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли как-то объединить много логических условий?  [new]
qwertyqwertyz
Guest
iap,

Да, большое спасибо! Это подходит. За поправку со спецсимволом отдельное спасибо!!!
28 мар 17, 12:33    [20340868]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли как-то объединить много логических условий?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3753
qwertyqwertyz
iap,

Да, большое спасибо! Это подходит. За поправку со спецсимволом отдельное спасибо!!!


LIKE 'объект[_]45'
LIKE 'объект_45'
LIKE 'объект%45'
28 мар 17, 12:39    [20340895]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли как-то объединить много логических условий?  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Ролг Хупин,

не порите чушь, ей больно
28 мар 17, 12:44    [20340924]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли как-то объединить много логических условий?  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 3753
TaPaK
Ролг Хупин,

не порите чушь, ей больно


я не порю её, это ТС для сравнения, пусть выбирает подходящий
28 мар 17, 12:49    [20340946]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли как-то объединить много логических условий?  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
Ролг Хупин
TaPaK
Ролг Хупин,

не порите чушь, ей больно


я не порю её, это ТС для сравнения, пусть выбирает подходящий

Порете, здесь я согласен с TaPaK.
В этом запросе LIKE вообще не нужен там нужно обычное сравнение.
А если нам предоставили "упрощенный" вариант, то это уде на совести вопрошающего.
И ответ на поставленный вопрос будет
WHERE 'объект_45' IN ( [obj_1], ... [obj_10] )
28 мар 17, 16:35    [20342482]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли как-то объединить много логических условий?  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
Ролг Хупин,
а еще ты забыл (не знал?) самое "правильное" экранирование
LIKE '....&_...' ESCAPE '&'

Не говоря уже о всяких коллешйенах
28 мар 17, 16:37    [20342494]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли как-то объединить много логических условий?  [new]
лолл
Member

Откуда:
Сообщений: 450
Гусары, полно вам стреляться из-за пары строк чужого кода :)
28 мар 17, 17:04    [20342696]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли как-то объединить много логических условий?  [new]
Руслан Дамирович
Member

Откуда: Резиновая нерезиновая
Сообщений: 940
лолл
Гусары, полно вам стреляться из-за пары строк чужого кода :)

Дружеское подкалывание, не больше.
Стреляться надо топикстартеру...
28 мар 17, 17:06    [20342721]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить