Tengo una columna llamada REMARKS en mi tabla TBL_DATA y tengo los datos en la tabla como se muestra a continuación.

REMARKS
--------------
Ramesh has VR2    
Ravi is VR1 member    
Rajesh had VR2    
Rakesh is VR10 employee

Mi requisito es obtener datos de la tabla donde remarks termina con la palabra VR seguida de un número como VR2, VR3,VR10,VR33.

De los datos anteriores, quiero obtener datos de la primera y tercera fila.

P.S: no debería usar como operador (como '% VR%')

-1
user1463065 16 jun. 2017 a las 14:56

3 respuestas

La mejor respuesta

Es posible que necesite lo siguiente:

with tbl_data(remarks) as (
    select 'Ramesh has VR2' from dual union all
    select 'Ravi is VR1 member' from dual union all
    select 'Rajesh had VR2' from dual union all
    select 'Rakesh is VR10 employee' from dual
)
select *
from tbl_data
where regexp_like(remarks, 'VR[0-9]+$') 

Que da:

REMARKS
-----------------------
Ramesh has VR2
Rajesh had VR2

Cómo funciona 'VR[0-9]+$':

  • VR: se explica por sí mismo
  • [0-9]+: una o más ocurrencias de un dígito
  • $: el final de la cadena
1
Aleksej 16 jun. 2017 a las 12:04

Otra expresión regular:

with tbl_data(remarks) as ( select 'Ramesh has VR2' from dual union all select 'Ravi is VR1 member' from dual union all select 'Rajesh had VR2' from dual union all select 'Rakesh is VR10 employee' from dual ) select * from tbl_data where regexp_like(remarks, 'VR\d+$') ;

0
junaling 16 jun. 2017 a las 19:05

Solo usa una expresión regular:

select t.*
from t
where regexp_like(t.remarks, 'VR[0-9]+$');
0
Gordon Linoff 16 jun. 2017 a las 12:04