Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Запрос и Case When Else End внутри  [new]
Qwe.Qwe1
Member

Откуда:
Сообщений: 237
Пытаюсь выбрать по определенным правилам строки, но почему-то внутренний Case выдает пустые значения, если строки не содержат подчеркивания. Не пойму почему?
(данные для примера) - надо выбрать такие строки:
- если есть "/", то знаменатель;
- если есть "_", то слово до подчеркивания;
- в остальных случаях - просто выбрать эту строку.
Что не так?

Declare @MyData Table (MyName varchar(50))
Insert Into @MyData (MyName) Values('Миша')
Insert Into @MyData (MyName) Values('Вася_1')
Insert Into @MyData (MyName) Values('Вася_25')
Insert Into @MyData (MyName) Values('Даша')
Insert Into @MyData (MyName) Values('Вася')
Insert Into @MyData (MyName) Values('Клава/Ира')

Select Substring(Case When MyName Like '%_%' Then Substring(MyName, 0, CharIndex('_', MyName, 0)) Else MyName End, CharIndex('/', MyName, 0) + 1, Len(MyName)) From @MyData
13 май 19, 23:17    [21883871]     Ответить | Цитировать Сообщить модератору
 Re: Запрос и Case When Else End внутри  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1021
Qwe.Qwe1,

потому что like работает c wildcard, читайте справку
Select Substring(Case When MyName Like '%[_]%' Then Substring(MyName, 0, CharIndex('_', MyName, 0)) Else MyName End, CharIndex('/', MyName, 0) + 1, Len(MyName)) From @MyData
13 май 19, 23:56    [21883891]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить