TEMA : buscar cadena de caracteres en un camo - Foro de Tu Informática Fácil

TEMA : buscar cadena de caracteres en un camo

buscar cadena de caracteres en un camo 02 Ago 2012, 15:02 #71

  • arito
  • Avatar de arito
  • DESCONECTADO
  • Karma:

buen dias, necesito utilizar una funcion de forma tal , que me encuentre la cadena de caracteres por ejemplo 'icf' en un campo detalle. Lo que ocurre, es que el campo puede estar al principio o en el medio de una cadena de caracteres de la siguiente forma. icf- error, se puede extraer utilizando el siguiente enunciado resumen like '%icf%'

pero en caso de que venga de la siguiente manera problema - (icf), no lo seleciona.

espero que alguien me pueda dar una mano, muchas gracias.

Re: buscar cadena de caracteres en un camo 03 Ago 2012, 12:57 #74

  • David
  • Avatar de David
  • DESCONECTADO
  • Karma:

Buenas, he reconstruido tu caso y funciona el LIKE funciona correctamente, está es la prueba que he hecho.

 

Las pruebas las he realizado en Oracle 10.2.0.4 y 11.2.0.1, con los parámetros NLS_SORT=BINARY y NLS_COMP=BINARY.

 

Creo la tabla prueba,

 

SQL> create table test.prueba(campo1 varchar2(30));

Table created.

 

Inserto 4 filas que el texto contiene icf de varias formas,

 

SQL> insert into test.prueba campo1 values ('prueba uno icf- error');

1 row created.

 

SQL> insert into test.prueba campo1 values ('prueba dos icf - error');

1 row created.

 

SQL> insert into test.prueba campo1 values ('prueba tres (icf) - error');

1 row created.

 

SQL> insert into test.prueba campo1 values ('prueba cuatro problema - (icf)');

1 row created.

SQL> commit;

 

Y los siguientes select devuelven las columnas que contiene (icf),

SQL> select * from test.prueba where campo1 like '%icf%';

CAMPO1

------------------------------

prueba uno icf- error

prueba dos icf - error

prueba tres (icf) - error

prueba cuatro problema - (icf)

 

select * from test.prueba where campo1 like '%(icf)%';

CAMPO1

------------------------------

prueba tres (icf) - error

prueba cuatro problema - (icf)

 

Si hay algo en la prueba que no se ajusta a tu problema coméntalo.

 

Verifica como tienes los parámetros NLS_SORT y NLS_COMP ya que pueden afectar al comportamiento del LIKE.

 

Saludos.

Re: buscar cadena de caracteres en un camo 03 Ago 2012, 13:08 #75

  • arito
  • Avatar de arito
  • DESCONECTADO
  • Karma:

muchas gracias por tu contribucion, luego de hacer la query varias veces, he comprobado que solo extraia las del tipo icf-xxxx, donde la ocurrencia icf estaba en los primeros 3 caracteres.

ahora bien, de que manera puede verificar el estado de los parametros NLS_xxx?

nuevamente. muchas gracias.

Re: buscar cadena de caracteres en un camo 04 Ago 2012, 12:35 #76

  • David
  • Avatar de David
  • DESCONECTADO
  • Karma:

utiliza la vista nls_database_parameters,

 

SQL> set line 200

SQL> select * from nls_database_parameters;

 

En la salida pdrás ver como tines inicializados los parmetros NLS.

 

Saludos.

Re: buscar cadena de caracteres en un camo 06 Ago 2012, 13:19 #77

  • arito
  • Avatar de arito
  • DESCONECTADO
  • Karma:

buen dia, David, el valor de los dos campos a los que se hacen referencia , estan en binary, como deberian estar para que no afecten la ejecucion del like? como se realiza dicha acualizacion en caso de ser necesario? un saludo.muchas gracias.

Re: buscar cadena de caracteres en un camo 07 Ago 2012, 13:09 #78

  • David
  • Avatar de David
  • DESCONECTADO
  • Karma:

Buenas, los valores son correctos, lo que no termino de entender es el problema exacto que tienes ya que si colocas el comodin % delante y detras de icf debería de devolverte todas las rows que contengan icf el la columna determinada, puedes ponerne una query ejemplo de lo que te está pasando para entender mejor el problema.

 

Saludos

Re: buscar cadena de caracteres en un camo 07 Ago 2012, 13:45 #79

  • arito
  • Avatar de arito
  • DESCONECTADO
  • Karma:

select count(1) ca ,dm.id_incidencia,dm.DE_GRUPO_RESOLUCION,to_char(dm.fc_fecha_resuelta,'mm/yyyy') fecha , dm.de_estado estado ,dm.de_tipo aplicacion ,dm.de_filtro tipo_incidencia,dm.id from dm_rmdy_incidencia dm INNER JOIN HC_RMDY_ASIGNACIONES hc ON hc.ID_INCIDENCIA=dm.ID_INCIDENCIA where to_char(dm.FC_FECHA_RESUELTA,'yyyy') = '2011' and dm.de_asunto like '%ICF%' and dm.DE_GRUPO_RESOLUCION IN ('FIJO APL Activacion', 'FIJO APL EAI', 'FIJO APL Fenix', 'FIJO APL Portabilidad', 'FIJO APL PRESELECCION', 'FIJO APL SCA TV', 'FIJO APL SCA Voz', 'FIJO APL SIAM', 'FIJO APL WOM1', 'FIJO Portal de REDES', 'HERRAMIENTAS TEST', 'Portal de REDES', 'YACOM ADMON Tibco5', 'YACOM OSS', 'YACOM PROD Tibco5', 'wholesales_corporate', 'DPM', 'Prov. Notes - AMLT') group by dm.id_incidencia, dm.DE_GRUPO_RESOLUCION, to_char(dm.fc_fecha_resuelta,'mm/yyyy'), dm.de_estado, dm.de_tipo, dm.de_filtro;

 

la query que habia armado antes de realizar la consulta era esta, esta consulta solo me traia los casos en los que la ocurrencia estaba de la siguiente manera ej:resumen:icf-xxxx y no traia las que estaban de la forma ej:resumen:voipsm - icf -, se que no deberia , pero al ver las cantidades, verifique que la diferencia estaba dada por este tipo de casos.

Re: buscar cadena de caracteres en un camo 09 Ago 2012, 12:16 #82

  • David
  • Avatar de David
  • DESCONECTADO
  • Karma:

Buenas, creo que tu problema no está en el funcionamiento del comodín % del LIKE sino que la rows que contienen la cadena 'voipsm - icf –' en dm_rmdy_incidencia no cumplen el resto de condiciones de la select, haz la siguiente prueba, haz un Select solo sobre la tabla dm_rmdy_incidencia y en la cláusula where solo la condición para la columna de_asunto con el LIKE, si esto te devuelve las rows que contienen la cadena que indicas de ejemplo, 'voipsm - icf –', revisa las condiciones y la tabla que enlazas en la select.

 

Saludos.

Conectados

Total de usuarios conectados 160 :: 0 Miembro(s) y 160 invitado(s).
Leyenda:  Administrador del Sitio Moderador Global Moderador Sancionado Usuario Invitado

Estadísticas

Total de mensajes : 379 | Total temas : 145 | Total miembros : 37533
Nuestro nuevo miembro : coro1959
JDL Forum