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

Откуда:
Сообщений: 54
Всем доброго времени суток
Вопрос такой
Необходимо найти в таблице в определённой колонне
4 первые цифры остальное буква либо буквы
Делаю так
Like '[0-9][0-9][0-9][0-9][A-Z]%' and like '[0-9][0-9][0-9][0-9][a-z]%'


Может есть другой способ?
Все бы хорошо, но вместе с буквами находит ещё и точки запятые
А необходимы только 4 первые цифры остальные буквы

Если есть идеи пишите пожалуйста

С Уважением
5 авг 19, 08:50    [21941838]     Ответить | Цитировать Сообщить модератору
 Re: Команда Like %  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31354
Jonsnow
Like '[0-9][0-9][0-9][0-9][A-Z]%' and like '[0-9][0-9][0-9][0-9][a-z]%'

Все бы хорошо, но вместе с буквами находит ещё и точки запятые
Не только "точки запятые", у вас вообще не фильтруется после 5-го символа.
Jonsnow
4 первые цифры остальное буква либо буквы

Наверное, без подстроки не обойтись:
select *, substring(field, 5, 8000)
from (select '1234asd7fg' as field union all select '1234asdfg' as field) t
where field Like '[0-9][0-9][0-9][0-9]%' and substring(field, 5, 8000) not like '%[^a-z]%'
5 авг 19, 09:27    [21941865]     Ответить | Цитировать Сообщить модератору
 Re: Команда Like %  [new]
Jonsnow
Member

Откуда:
Сообщений: 54
alexeyvg,

Спасибо большое, вроде все работает

Но бывают рекорды по типу только цифры
Исключить тоже
Вот формат
[****^]
* 4 цифры
^ буква либо буквы

А у меня ещё находит
[****] + [****^]
Необходимо только [****^]
5 авг 19, 10:06    [21941897]     Ответить | Цитировать Сообщить модератору
 Re: Команда Like %  [new]
Jonsnow
Member

Откуда:
Сообщений: 54
добавил ещё условие
not like[0-9][0-9][0-9][0-9]

Спасибо
5 авг 19, 10:09    [21941900]     Ответить | Цитировать Сообщить модератору
 Re: Команда Like %  [new]
-- KAB --
Member

Откуда: Москва
Сообщений: 20
Jonsnow
Всем доброго времени суток
Вопрос такой
Необходимо найти в таблице в определённой колонне
4 первые цифры остальное буква либо буквы
Делаю так
Like '[0-9][0-9][0-9][0-9][A-Z]%' and like '[0-9][0-9][0-9][0-9][a-z]%'


Может есть другой способ?
Все бы хорошо, но вместе с буквами находит ещё и точки запятые
А необходимы только 4 первые цифры остальные буквы

Если есть идеи пишите пожалуйста

С Уважением


Like '[0-9][0-9][0-9][0-9][0-9,A-Z]%'
5 авг 19, 10:40    [21941922]     Ответить | Цитировать Сообщить модератору
 Re: Команда Like %  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
-- KAB --
Like '[0-9][0-9][0-9][0-9][0-9,A-Z]%'
Это неправильно по десятку причин.
Jonsnow
Но бывают рекорды по типу только цифры
Исключить тоже
Вот формат
[****^]
* 4 цифры
^ буква либо буквы

А у меня ещё находит
[****] + [****^]
Необходимо только [****^]
Вы не могли бы перейти на русский язык и последовательно написать, что же вам надо?
5 авг 19, 10:44    [21941924]     Ответить | Цитировать Сообщить модератору
 Re: Команда Like %  [new]
-- KAB --
Member

Откуда: Москва
Сообщений: 20
iap
-- KAB --
Like '[0-9][0-9][0-9][0-9][0-9,A-Z]%'
Это неправильно по десятку причин.
Jonsnow
Но бывают рекорды по типу только цифры
Исключить тоже
Вот формат
[****^]
* 4 цифры
^ буква либо буквы

А у меня ещё находит
[****] + [****^]
Необходимо только [****^]
Вы не могли бы перейти на русский язык и последовательно написать, что же вам надо?

Да... вы правы, пока вижу 2 лайка, тупанул )
declare @t table (name varchar(50))
insert @t values
('1234a_'),
('123'),
('1234as4'),
('123as4')

select * from @t where
name not like '%[^0-9,A-Z]%' and name like '[0-9][0-9][0-9][0-9]%'

Впрочем тоже самое по сути Гавриленко написал
5 авг 19, 10:55    [21941934]     Ответить | Цитировать Сообщить модератору
 Re: Команда Like %  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
-- KAB --
name not like '%[^0-9,A-Z]%'
Во-первых, зачем там запятая?
Во-вторых, для разных COLLATE один и тот же диапазон - это разный набор символов.
В-третьих, нужны все буквы, а у вас только строчные. А если COLLATE регистрозависимый?
И т.д.
5 авг 19, 11:07    [21941940]     Ответить | Цитировать Сообщить модератору
 Re: Команда Like %  [new]
-- KAB --
Member

Откуда: Москва
Сообщений: 20
iap
-- KAB --
name not like '%[^0-9,A-Z]%'
Во-первых, зачем там запятая?
Во-вторых, для разных COLLATE один и тот же диапазон - это разный набор символов.
В-третьих, нужны все буквы, а у вас только строчные. А если COLLATE регистрозависимый?
И т.д.


В четвертых если буквы арабские или китайские? )
PS: действительно запятая лишняя, коллейт... в регистрозависимых апперкейз добавить да... или проверять и нижний и верхний регистрый. А вот И т.д. для меня не понятно - разве что не указан язык иврит или набиру
5 авг 19, 11:21    [21941949]     Ответить | Цитировать Сообщить модератору
 Re: Команда Like %  [new]
iap
Member

Откуда: Москва
Сообщений: 46977
-- KAB --,

китайских букв не бывает!
5 авг 19, 12:24    [21942005]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить