Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Qwe.Qwe1 Member Откуда: Сообщений: 263 |
Пытаюсь выбрать по определенным правилам строки, но почему-то внутренний 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] Ответить | Цитировать Сообщить модератору |
felix_ff Member Откуда: Moscow Сообщений: 1698 |
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 | ![]() |