Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 как можно отобрать значения?  [new]
klara1
Member

Откуда:
Сообщений: 79
Стоит такая задача: в текстовом поле встречается текст [prot]. Именно так, в квадратных скобках. мне же необходимо отобрать строки с таким текстовым полем, которое содержит какие-то символы, присовокупленные к этому тексту, например, [prot]_1 или tmp_[prot]...
Я пока новичек в sql и что-то не очень получается((
Вот, пока что попробовала сделать:
select idc,idf,tip,name,prizn from a_kon_sym f where auto_edit like '%%+%prot%'
но кажется, отбирается не всё. Может быть, кто-нибудь подскажет, как можно сделать?
Заранее благодарна.
3 июн 13, 17:15    [14385207]     Ответить | Цитировать Сообщить модератору
 Re: как можно отобрать значения?  [new]
klara1
Member

Откуда:
Сообщений: 79
select idc,idf,tip,name,prizn from a_kon_sym where auto_edit like '%%+%prot%'

То есть вот так :)
3 июн 13, 17:16    [14385226]     Ответить | Цитировать Сообщить модератору
 Re: как можно отобрать значения?  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5133
like '%[prot]%'
3 июн 13, 17:17    [14385237]     Ответить | Цитировать Сообщить модератору
 Re: как можно отобрать значения?  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
klara1
select idc,idf,tip,name,prizn from a_kon_sym where auto_edit like '%%+%prot%'

То есть вот так :)

так он у вас ещё и + ищет. Просто
LIKE '%[prot]%' 
3 июн 13, 17:24    [14385290]     Ответить | Цитировать Сообщить модератору
 Re: как можно отобрать значения?  [new]
iap
Member

Откуда: Москва
Сообщений: 47005
Александр52
like '%[prot]%'
Ну что Вы, коллега! Как же так можно!
like '%[[]prot]%'
3 июн 13, 17:25    [14385293]     Ответить | Цитировать Сообщить модератору
 Re: как можно отобрать значения?  [new]
Glory
Member

Откуда:
Сообщений: 104760
like '%[[]prot]%'


Сообщение было отредактировано: 3 июн 13, 17:26
3 июн 13, 17:26    [14385299]     Ответить | Цитировать Сообщить модератору
 Re: как можно отобрать значения?  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
iap
Александр52
like '%[prot]%'
Ну что Вы, коллега! Как же так можно!
like '%[[]prot]%'


:P Даж стыдно стало:)
3 июн 13, 17:26    [14385300]     Ответить | Цитировать Сообщить модератору
 Re: как можно отобрать значения?  [new]
iap
Member

Откуда: Москва
Сообщений: 47005
Сергей Викт.
klara1
select idc,idf,tip,name,prizn from a_kon_sym where auto_edit like '%%+%prot%'

То есть вот так :)

так он у вас ещё и + ищет. Просто
LIKE '%[prot]%' 
Значит, годится строка 'p'? Или, всё-таки, должно быть слово prot в квадратных скобках?
3 июн 13, 17:26    [14385305]     Ответить | Цитировать Сообщить модератору
 Re: как можно отобрать значения?  [new]
invm
Member

Откуда: Москва
Сообщений: 9425
declare @s1 varchar(30) = '1[prot]2', @s2 varchar(30) = '1[p]2';

select '@s1' where @s1 like '%[[]prot]%';
select '@s1' where @s1 like '%[prot]%';

select '@s2' where @s2 like '%[[]prot]%';
select '@s2' where @s2 like '%[prot]%';
3 июн 13, 17:27    [14385312]     Ответить | Цитировать Сообщить модератору
 Re: как можно отобрать значения?  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
iap
Сергей Викт.
пропущено...

так он у вас ещё и + ищет. Просто
LIKE '%[prot]%' 
Значит, годится строка 'p'? Или, всё-таки, должно быть слово prot в квадратных скобках?

я уже написал выше, что лоханулся:)
конечно должно быть как вы написали выше.
3 июн 13, 17:29    [14385322]     Ответить | Цитировать Сообщить модератору
 Re: как можно отобрать значения?  [new]
iap
Member

Откуда: Москва
Сообщений: 47005
А вот если на месте теперешней левой квадратной скобки
мы хотим видеть или левую или правую, то я не знаю решения с помощью одного LIKE

Из-за того, что первая же правая квадратная скобка
после первой левой квадратной скобки рассматривается как "конец диапазона".
А следующая правая скобка - это просто символ, обязательный на данном месте (задана уже вне диапазона).
3 июн 13, 17:33    [14385351]     Ответить | Цитировать Сообщить модератору
 Re: как можно отобрать значения?  [new]
Александр52
Member

Откуда: Кокосовые острова ส็็็็็
Сообщений: 5133
iap, оказывается я не знал, теперь осведомлен, спасибо! :)
3 июн 13, 17:33    [14385356]     Ответить | Цитировать Сообщить модератору
 Re: как можно отобрать значения?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
like '%![prot!]%' escape '!'
3 июн 13, 17:34    [14385364]     Ответить | Цитировать Сообщить модератору
 Re: как можно отобрать значения?  [new]
iap
Member

Откуда: Москва
Сообщений: 47005
Александр52
iap, оказывается я не знал, теперь осведомлен, спасибо! :)
Точно так же и другие спецсимволы (%_) могут задаваться в числе заданного множества символов внутри квадратных скобок.


Что-то я в предыдущем сообщении неправильно употребил слово "диапазон".
Правильнее "множество", наверно. В общем, то, что между квадратными скобками.
3 июн 13, 17:36    [14385380]     Ответить | Цитировать Сообщить модератору
 Re: как можно отобрать значения?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
iap
А вот если на месте теперешней левой квадратной скобки
мы хотим видеть или левую или правую, то я не знаю решения с помощью одного LIKE

with cte(a) as (select 'prot' union all select 'a[prot]b' union all select 'a]prot]b' union all select 'a]prot[b')
select a
from cte
where a like '%[![!]]prot!]%' escape '!'
3 июн 13, 17:37    [14385387]     Ответить | Цитировать Сообщить модератору
 Re: как можно отобрать значения?  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
Гость333
like '%![prot!]%' escape '!'

Красиво!! Правда.. В закладки) Ни разу не использовал, а оказывается весьма полезная вещь!!!
3 июн 13, 17:38    [14385390]     Ответить | Цитировать Сообщить модератору
 Re: как можно отобрать значения?  [new]
iap
Member

Откуда: Москва
Сообщений: 47005
Гость333
'%[![!]]prot!]%' escape '!'
Вот! Подозревал, но лень было проверить.
Однако, мне не нравится, что ESCAPE нельзя использовать в PATINDEX()! :))
3 июн 13, 17:41    [14385417]     Ответить | Цитировать Сообщить модератору
 Re: как можно отобрать значения?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
iap
Однако, мне не нравится, что ESCAPE нельзя использовать в PATINDEX()! :))

Кстати, да, какое-то непонятное упущение :)
3 июн 13, 17:43    [14385424]     Ответить | Цитировать Сообщить модератору
 Re: как можно отобрать значения?  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3279
Сергей Викт.,

Вы б сначала запустили, прежде чем так разливаться.


Искейп - да, безусловно. Но мне кажется, в один лайк здесь не сделать в принципе. Если нужно по одному непробельному символу слева ИЛИ справа, то кроме OR ничего не взлетит. Разумеется, не считая извратов с UNION ALL и последующим having count(*) = 2.
3 июн 13, 17:45    [14385439]     Ответить | Цитировать Сообщить модератору
 Re: как можно отобрать значения?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Ennor Tiegael
мне кажется, в один лайк здесь не сделать в принципе.

"Здесь" — это где, в какой задаче? :)
3 июн 13, 17:48    [14385463]     Ответить | Цитировать Сообщить модератору
 Re: как можно отобрать значения?  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
Ennor Tiegael
Сергей Викт.,

Вы б сначала запустили, прежде чем так разливаться.


Искейп - да, безусловно. Но мне кажется, в один лайк здесь не сделать в принципе. Если нужно по одному непробельному символу слева ИЛИ справа, то кроме OR ничего не взлетит. Разумеется, не считая извратов с UNION ALL и последующим having count(*) = 2.


where a like '%[![]prot!]%' escape '!' 

Мне кажется это работает, нет? По крайней мере я запустил, покрутил разные скобочки, всё нормуль :)
3 июн 13, 17:49    [14385470]     Ответить | Цитировать Сообщить модератору
 Re: как можно отобрать значения?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
Сергей Викт.

where a like '%[![]prot!]%' escape '!' 

Мне кажется это работает, нет? По крайней мере я запустил, покрутил разные скобочки, всё нормуль :)

А вариант
like '%![prot!]%' escape '!'
на каких-то данных работает неправильно?
3 июн 13, 17:52    [14385488]     Ответить | Цитировать Сообщить модератору
 Re: как можно отобрать значения?  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
like '%[[][p][r][o][t]]%'


А так нельзя или что???
3 июн 13, 17:54    [14385503]     Ответить | Цитировать Сообщить модератору
 Re: как можно отобрать значения?  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
Гость333
Сергей Викт.
where a like '%[![]prot!]%' escape '!' 

Мне кажется это работает, нет? По крайней мере я запустил, покрутил разные скобочки, всё нормуль :)

А вариант
like '%![prot!]%' escape '!'
на каких-то данных работает неправильно?

Вроде правильно:)
3 июн 13, 17:55    [14385504]     Ответить | Цитировать Сообщить модератору
 Re: как можно отобрать значения?  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
Сергей Викт.
like '%[[][p][r][o][t]]%'


А так нельзя или что???

нельзя) уже нашёл, где это не работает)))
3 июн 13, 17:55    [14385510]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить