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

Откуда:
Сообщений: 2894
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi

case:
WITH foo AS (
SELECT 'CCCDD' AS fld FROM dual
UNION ALL
SELECT 'CCCDDD' FROM dual
UNION ALL
SELECT 'CCCCDDDDD' FROM dual
)
,foo2 AS (
SELECT fld
	,'^'||REPLACE(REPLACE(fld,'D','\d'),'C','\D')||'$' AS tmp	
FROM foo)
SELECT foo2.* 
	,regexp_substr('ABC12',tmp) AS regexp_substr
FROM foo2
WHERE regexp_substr('ABC12',tmp) IS  null;
/*
CCCDD	^\D\D\D\d\d$	ABC12
CCCDDD	^\D\D\D\d\d\d$	
CCCCDDDDD	^\D\D\D\D\d\d\d\d\d$	
*/


борем как-то так (вариант /*+ materialize*/
WITH foo AS (
SELECT 'CCCDD' AS fld FROM dual
UNION ALL
SELECT 'CCCDDD' FROM dual
UNION ALL
SELECT 'CCCCDDDDD' FROM dual
)
,foo2 AS (
SELECT  fld
	,'^'||REPLACE(REPLACE(fld,'D','\d'),'C','\D')||'$' AS tmp	
FROM foo)
,foo3 AS (
SELECT /*DISTINCT*/ foo2.* 
	,regexp_substr('ABC12',tmp) AS regexp_substr
	,rownum as rn -- важно !!!
FROM foo2
)
SELECT * FROM foo3 
WHERE regexp_substr IS NULL;
/*
CCCDDD	^\D\D\D\d\d\d$		2
CCCCDDDDD	^\D\D\D\D\d\d\d\d\d$		3
*/


что это, беримор ?
в каком-нить ора это уже победили ?
/*с regexp_like та же шняга*/

не нравится что DISTINCT не работает 100%-но (как и /*+ materialize*/).
есть 100% гарантированный спопсб мат-ции предвычисления, без ручного создания темповой ?

PS где-то тут про похожее видел. давно. ткните плиз, если есть.
30 апр 14, 11:48    [15957192]     Ответить | Цитировать Сообщить модератору
 Re: bug 10g  [new]
ananax
Member

Откуда: MO
Сообщений: 424
qwwq,

11.2.0.3.0
SQL> WITH foo AS (
2 SELECT 'CCCDD' AS fld FROM dual
3 UNION ALL
4 SELECT 'CCCDDD' FROM dual
5 UNION ALL
6 SELECT 'CCCCDDDDD' FROM dual
7 )
8 ,foo2 AS (
9 SELECT fld
10 ,'^'||REPLACE(REPLACE(fld,'D','\d'),'C','\D')||'$' AS tmp
11 FROM foo)
12 SELECT foo2.*
13 ,regexp_substr('ABC12',tmp) AS regexp_substr
14 FROM foo2
15 WHERE regexp_substr('ABC12',tmp) IS null;

FLD TMP REGEX
--------- -------------------------------------- -----
CCCDDD ^\D\D\D\d\d\d$
CCCCDDDDD ^\D\D\D\D\d\d\d\d\d$

SQL>
30 апр 14, 13:24    [15958115]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить