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

Откуда:
Сообщений: 68
Добрый день.
У меня есть таблица. назывется ТС
в ней есть данные по машине - т.е. Марка\Модель , Регистрационный номер.
Так вот регистрационный номер 2ух типов есть ААА000А и АААА00А
как мне выбрать данные определенного формата, подскажите, плиз
5 фев 16, 11:11    [18776390]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных определенного формата  [new]
Opus Magnum
Member

Откуда: 77 Rus
Сообщений: 2205
REGEXP_SUBSTR
5 фев 16, 11:17    [18776418]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных определенного формата  [new]
Opus Magnum
Member

Откуда: 77 Rus
Сообщений: 2205
Ну и наспех собранный кривой примерчик, пока грузятся данные:

select * from dual where regexp_like ('AAA000A', '\w\d{3}\w')
5 фев 16, 11:27    [18776460]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных определенного формата  [new]
бизнес-целкостность
Guest
substr(...., 4, 1) between '0' and '9'
5 фев 16, 11:30    [18776474]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных определенного формата  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
select * from t where rn = 'ААА000А'

select * from t where rn = 'АААA00А'
5 фев 16, 12:37    [18776870]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных определенного формата  [new]
aziker
Member

Откуда:
Сообщений: 68
Спасибо нашел решение через Ascii код
5 фев 16, 13:01    [18777052]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных определенного формата  [new]
Opus Magnum
Member

Откуда: 77 Rus
Сообщений: 2205
aziker
Спасибо нашел решение через Ascii код

Если Вас не затруднит, покажите рабочий вариант, пожалуйста.
5 фев 16, 13:16    [18777188]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных определенного формата  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7136
aziker,
не надо изобретать велосипед: REGEXP_LIKE Condition
with t (num) as (
select 'FGW044Q' from dual union all
select 'FGL544Z' from dual union all
select 'QSF234V' from dual union all
select 'FGLN42X' from dual union all
select 'JGVI80X' from dual union all
select 'ЩЧЪЮ57Ь' from dual
)
select num from t where regexp_like(num,'[[:alpha:]]{4}\d{2}[[:alpha:]]','i');
...
FGLN42X
JGVI80X
ЩЧЪЮ57Ь
5 фев 16, 13:25    [18777260]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных определенного формата  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
Vadim Lejnin
aziker,
не надо изобретать велосипед: ..

ну а, если нужна скорость, то, велосипед (например, на translate) выиграет
5 фев 16, 14:34    [18777831]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных определенного формата  [new]
aziker
Member

Откуда:
Сообщений: 68
Vadim Lejnin,
что значит буква "i" в внутри функции, скажите пожалуйста
5 фев 16, 15:49    [18778299]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных определенного формата  [new]
Vadim Lejnin
Member

Откуда:
Сообщений: 7136
aziker
Vadim Lejnin,
что значит буква "i" в внутри функции, скажите пожалуйста

Мессир, учитесь пользоваться документацией, в 18777260 дал прямую ссылку на описание regexp_like
5 фев 16, 15:54    [18778339]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных определенного формата  [new]
Elic
Member

Откуда:
Сообщений: 29991
aziker
что значит буква "i" в внутри функции, скажите пожалуйста
Почему бы не прочитать об этом в документации по приведённой ссылке?
5 фев 16, 15:56    [18778357]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных определенного формата  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
aziker
буква "i"

REGEXP_LIKE Condition
автор
match_parameter is a text literal that lets you change the default matching behavior of the function. You can specify one or more of the following values for match_parameter:
'i' specifies case-insensitive matching.
'c' specifies case-sensitive matching.
'n' allows the period (.), which is the match-any-character wildcard character, to match the newline character. If you omit this parameter, then the period does not match the newline character.
'm' treats the source string as multiple lines. Oracle interprets ^ and $ as the start and end, respectively, of any line anywhere in the source string, rather than only at the start or end of the entire source string. If you omit this parameter, then Oracle treats the source string as a single line.
'x' ignores whitespace characters. By default, whitespace characters match themselves.
5 фев 16, 15:59    [18778384]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных определенного формата  [new]
aziker
Member

Откуда:
Сообщений: 68
Vadim Lejnin,Спасибо!
5 фев 16, 15:59    [18778387]     Ответить | Цитировать Сообщить модератору
 Re: Выборка данных определенного формата  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
однако, без регулярусов тормознухи - гораздо быстрее
SQL> set timing on
SQL> create table tb_001_tmp as
  2  select dbms_random.string('x',7) num
  3    from dual
  4  connect by level <= 1e6;

Таблица создана.

SQL> 
SQL> with t (num) as (
  2   select num from tb_001_tmp
  3  )
  4  select count(num) from t where regexp_like(num,'[[:alpha:]]{4}\d{2}[[:alpha:]]','i');

COUNT(NUM)                                                                      
----------                                                                      
     15193                                                                      

Затрач.время: 00:00:07.13
SQL> 
SQL> with t(num) as (
  2   select * from tb_001_tmp
  3  )
  4  select count(num)
  5    from t
  6   where translate(num,'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
  7  			 ,'9999999999ZZZZZZZZZZZZZZZZZZZZZZZZZZ')='ZZZZ99Z';

COUNT(NUM)                                                                      
----------                                                                      
     15193                                                                      

Затрач.время: 00:00:00.31
7 фев 16, 15:20    [18784153]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить