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

Откуда:
Сообщений: 157
Доброго времени суток, коллеги.

Есть набор строк varchar примерно такого содержания '10 13 1 3 16'
Мне надо через поиск найти все строки где есть символ 1, но чтобы в результат не попали строки содержащие символы 13 и 16.
Сейчас пробую через like like '%1%' , но в результатах получаю все строки где есть и 1 и 16 и 13 и т.д.

Гуру, подскажите пожалуйста, как это можно решить?
23 дек 12, 20:35    [13673934]     Ответить | Цитировать Сообщить модератору
 Re: оператор like  [new]
qwerty112
Guest
ecoli,

where ' '+fld+' ' like '% 1 %'
23 дек 12, 20:40    [13673946]     Ответить | Цитировать Сообщить модератору
 Re: оператор like  [new]
Ennor Tiegael
Member

Откуда:
Сообщений: 3274
like '%[^0-9]1[^0-9]%'
Кажется.
23 дек 12, 20:41    [13673948]     Ответить | Цитировать Сообщить модератору
 Re: оператор like  [new]
ecoli
Member

Откуда:
Сообщений: 157
спасибо, супер!!!
23 дек 12, 20:43    [13673957]     Ответить | Цитировать Сообщить модератору
 Re: оператор like  [new]
ecoli
Member

Откуда:
Сообщений: 157
qwerty112
ecoli,

where ' '+fld+' ' like '% 1 %'


вот этот вариант решил мою проблему.
23 дек 12, 20:44    [13673958]     Ответить | Цитировать Сообщить модератору
 Re: оператор like  [new]
ROLpogo
Member

Откуда: Реутов
Сообщений: 216
ecoli
qwerty112
ecoli,

where ' '+fld+' ' like '% 1 %'


вот этот вариант решил мою проблему.


По приведенному условию задачи решением будет:
where fld like '%1%' and fld not like '%13%' and fld not like '%16%'


А если автор считает, что
 where ' '+fld+' ' like '% 1 %' 
решило его проблему, то ему нужно задуматься о корректности постановки задачи.
24 дек 12, 10:54    [13675530]     Ответить | Цитировать Сообщить модератору
 Re: оператор like  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
ROLpogo
ecoli
пропущено...


вот этот вариант решил мою проблему.


По приведенному условию задачи решением будет:
where fld like '%1%' and fld not like '%13%' and fld not like '%16%'


А если автор считает, что
 where ' '+fld+' ' like '% 1 %' 
решило его проблему, то ему нужно задуматься о корректности постановки задачи.
О чём тут говорить, если '13' и '16' названы символами?
С этого момента из темы можно валить, ибо нельзя найти решение бессмысленой задачи.
24 дек 12, 10:58    [13675557]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить