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

Откуда:
Сообщений: 3
Помогите правильно сформулировать 2 условия LIKE, которые на русском языке формулируются так:
1. Выбрать записи, которые содержат 727, но не содержат латинских и кириллических символов.
2. Выбрать записи, которые содержат 727 и любое количество нулей перед 727.
29 май 14, 17:54    [16093532]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по LIKE  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4804
1) X LIKE '%717%' AND UPPER(X) NOT LIKE '%[A-Z]%'

2) со втором непонятно, если содержит 727, то какая разница сколько нулей

X LIKE '%727%' OR X LIKE '%0727%'
29 май 14, 19:42    [16094116]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по LIKE  [new]
vikkiv
Member

Откуда: London
Сообщений: 2712
a_voronin, Думаю что дилемма в том что применён оператор и т.е. перед 727 могут быть только нули и нечего другого кроме них.
29 май 14, 19:48    [16094139]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по LIKE  [new]
dm_i_n0
Member

Откуда:
Сообщений: 3
vikkiv
a_voronin, Думаю что дилемма в том что применён оператор и т.е. перед 727 могут быть только нули и нечего другого кроме них.

Верно. Я не совсем корректно сформулировал задачу во втором пункте. Задача выбирать записи "0727", "00727" и т.д. Но не "01727", "07274" и т.д.
29 май 14, 20:00    [16094201]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по LIKE  [new]
Guf
Member

Откуда: Новосибирск
Сообщений: 647
dm_i_n0
Верно. Я не совсем корректно сформулировал задачу во втором пункте. Задача выбирать записи "0727", "00727" и т.д. Но не "01727", "07274" и т.д.

А "07274" чем не угодил?
Если просто опечатка, то
<имя поля> LIKE '%727%' AND REPLACE(<имя поля>, '0', '') LIKE '727%'

Вы же понимаете, что скорость будет не айс
30 май 14, 07:59    [16095253]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по LIKE  [new]
dm_i_n0
Member

Откуда:
Сообщений: 3
Guf, за фокус с REPLACE - спасибо! Что-то я его упустил. Это решило мой вопрос.
30 май 14, 11:01    [16095963]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по LIKE  [new]
angel_zar
Member

Откуда: Барнаул
Сообщений: 902
0000702765486727
30 май 14, 11:05    [16095994]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по LIKE  [new]
iap
Member

Откуда: Москва
Сообщений: 47000
Guf
dm_i_n0
Верно. Я не совсем корректно сформулировал задачу во втором пункте. Задача выбирать записи "0727", "00727" и т.д. Но не "01727", "07274" и т.д.

А "07274" чем не угодил?
Если просто опечатка, то
<имя поля> LIKE '%727%' AND REPLACE(<имя поля>, '0', '') LIKE '727%'


Вы же понимаете, что скорость будет не айс
А если '0700207727'?
30 май 14, 11:09    [16096016]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по LIKE  [new]
angel_zar
Member

Откуда: Барнаул
Сообщений: 902
Надо убирать 0ли только в начале строки.
Right(@Num,Len(@Num)-PatIndex('%[^0]%', @Num)+1)
30 май 14, 11:13    [16096046]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос по LIKE  [new]
Glory
Member

Откуда:
Сообщений: 104760
http://msdn.microsoft.com/en-us/magazine/cc163473.aspx
http://blogs.msdn.com/b/sqlclr/archive/2005/06/29/regex.aspx
30 май 14, 11:17    [16096071]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить