Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] eliminar todo menos los caracteres alfabeticos

Estas en el tema de eliminar todo menos los caracteres alfabeticos en el foro de Mysql en Foros del Web. es posible eliminar todos los caracteres exceptos los alfabeticos para posteriormente poder hacer una consulta con regexp sobre el resultado. normalmente lo hago con programacion ...
  #1 (permalink)  
Antiguo 21/12/2017, 14:23
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 11 meses
Puntos: 10
eliminar todo menos los caracteres alfabeticos

es posible eliminar todos los caracteres exceptos los alfabeticos para posteriormente poder hacer una consulta con regexp sobre el resultado.

normalmente lo hago con programacion estas cosas pero quiero saber si con mysql es posible.
  #2 (permalink)  
Antiguo 21/12/2017, 14:28
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: eliminar todo menos los caracteres alfabeticos

si es posible, no hay una funcion pero podrias hacer algo como esto:

https://stackoverflow.com/questions/...tring/22903586
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 21/12/2017, 14:59
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 11 meses
Puntos: 10
Respuesta: eliminar todo menos los caracteres alfabeticos

Cita:
Iniciado por Libras Ver Mensaje
si es posible, no hay una funcion pero podrias hacer algo como esto:

https://stackoverflow.com/questions/...tring/22903586
pinta bien pero no me aclaro mucho, lo que pretendo es quitar todos las etiquetas html de dos campos y unirlo todo para hacer una busqueda en like por ejemplo.

si parte de los campos tienen esto "<b>soy negrita</b>" al eliminar saldria esto:

"bsoynegritab"

necestio que salga "soynegrita".

Es posible usar REGEXP y con el resultado usar LIKE O REGEXP.
buscando en el manual encontre replace pero es una pena que no funcione con expresiones seria exactamente lo que necesito.

Alguna idea para encontrar hacer lo que necesito?
  #4 (permalink)  
Antiguo 21/12/2017, 15:54
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: eliminar todo menos los caracteres alfabeticos

tu tendrias que hacer un parseador, no hay funciones que hagan eso especificamente, podrias ver si usando XML puedes obtener lo que necesitas:

https://dev.mysql.com/doc/refman/5.5...functions.html
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 21/12/2017, 15:58
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 11 meses
Puntos: 10
Respuesta: eliminar todo menos los caracteres alfabeticos

Hola Libras, mientro me leo tu enlace te quiero hacer una pregunta, es posible una vez creada la funcion que filtra la cadena pasada, pasarle a esta funcion como parametro para ser filtrado el valor de dos campos y con el resultado hacer una busqueda con LIKE.
es posible esto entiendo que todo en la misma funcion es posible pero quiero usar la funcion dentro de un select con LIKE.
saludos
  #6 (permalink)  
Antiguo 21/12/2017, 16:02
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: eliminar todo menos los caracteres alfabeticos

todo es posible :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 21/12/2017, 16:08
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 11 meses
Puntos: 10
Respuesta: eliminar todo menos los caracteres alfabeticos

Cita:
Iniciado por Libras Ver Mensaje
todo es posible :)
respeto a usar xml es una buena solucion pero de momento no uso xml para almacenar datos.

sobre todo es posible yo intento algo asi pero tengo pocos conocimientos en msyql.

supongamos que la funcion que filtra se llama "filter(string)"

Código MySQL:
Ver original
  1. select campo1,campo2,filter(campo1+campo2)as resultado from tabla where resultado like'cosa'

esto no me funciona tampoco con un solo campo en el filter
  #8 (permalink)  
Antiguo 22/12/2017, 06:40
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 11 meses
Puntos: 10
Respuesta: eliminar todo menos los caracteres alfabeticos

Estoy buscando en internet pero no encuentro nada que me oriente con la logica a implementar.
necesito hacer una busqueda compleja que ni con expresiones regulares seria efectiva, la unica solucion seria el campo que quiero hacer la busqueda dejarlo solo con caracteres alfabeticos y posteriormente hacer la busqueda de la palabra clave con LIKE.

Necestio saber la logica a implementar y con un ejemplo mejor aún pero me conformo con la logica ya que no conozco todos los recursos que es capaz mysql ,uso mariadb 5.5, ademas añadir que la busqueda se deberia de hacer en dos campos.

nadie me puede ayudar?

Sigo buscando......
  #9 (permalink)  
Antiguo 22/12/2017, 08:34
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: eliminar todo menos los caracteres alfabeticos

ya investigaste sobre full text search? podrias poner un ejemplo de que es lo que quieres hacer?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #10 (permalink)  
Antiguo 22/12/2017, 09:41
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 11 meses
Puntos: 10
Respuesta: eliminar todo menos los caracteres alfabeticos

Cita:
Iniciado por Libras Ver Mensaje
ya investigaste sobre full text search? podrias poner un ejemplo de que es lo que quieres hacer?
hola, gracis por tu interes en seguir ayudandome, si ya investige sobre fulltext y llege a la conclusion que incluso regexp es mas lento pero mas poderoso pero aun asi tampoco consigo los resultados que quiero. lo que necesito es hacer una busqueda pero teniendo en cuenta que los datos tienen etiquetas html pongo un ejemplo para que se entienda mejor.

campo descripcion contiene algo como esto 'cadena de texto' pero con etiquetas:

"<span style='color:red'>ca</span>de<b>n</b>a de text<span>o</span>";

es decir contiene etiquetas html en cualquier caracter o incluso dos caracter y yo quiero buscar la palabra 'CADENA' con regexp pero me doy cuenta que al no seguir un patron no se buscar la palabra "CADENA", por eso si consiguiera filtrar los datos eliminando etiquetas podria conseguirlo de una manera mas facil.

Que alternativas tengo, quizas creo que ya deberia usar programacion pero mientras no me digais que con sql no es posible no lo tendre en cuenta.
saludos
  #11 (permalink)  
Antiguo 22/12/2017, 10:21
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: eliminar todo menos los caracteres alfabeticos

https://stackoverflow.com/questions/...gs-from-record
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #12 (permalink)  
Antiguo 22/12/2017, 11:12
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 11 meses
Puntos: 10
Respuesta: eliminar todo menos los caracteres alfabeticos

No me sirve o no lo se ver, el problema es que no sigue un mismo patron y por eso se me complica, ejemplos de cadenas para buscar la palabra "CADENA":

esto es una cadena

"es<b>to</b> es un<span>a</span> ca<span>d</span><span style='color:red'>de<spn>na"

o

"esto es <span>una</span> ca<span></span>dena<span>"

Lo que necesito es la funcion REGEXP_REPLACE pero uso mariadb 5 y solo esta a partir de la 10.

Tambien podria crear una funcion que filtre los datos pasandole como parametro el campo de la tabla que quiero filtrar y verificar si esta o no para mostrar el registro, pero no se como se le puede pasar pasar a la funcion como parametro el valor del campo y posteriormente verificar si cumple condicion para mostrar registro en pantalla.

Última edición por azaz; 22/12/2017 a las 11:40
  #13 (permalink)  
Antiguo 22/12/2017, 11:44
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: eliminar todo menos los caracteres alfabeticos

Se supone que varias funciones de ahi lo que hacen es remover las etiquetas html o el texto que este dentro de los <>

con este ejemplo:
SELECT fnStripTags('this <html>is <b>a test</b>, nothing more</html>');

Regresaria

This is a test, nothing more

Que es lo que creo necesitas no?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #14 (permalink)  
Antiguo 22/12/2017, 14:15
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 11 meses
Puntos: 10
Respuesta: eliminar todo menos los caracteres alfabeticos

Cita:
Iniciado por Libras Ver Mensaje
Se supone que varias funciones de ahi lo que hacen es remover las etiquetas html o el texto que este dentro de los <>

con este ejemplo:
SELECT fnStripTags('this <html>is <b>a test</b>, nothing more</html>');

Regresaria

This is a test, nothing more

Que es lo que creo necesitas no?

si pero no se como aplicarlo a los dos campos de mi tabla que necestio filtrar y posteriormente con el resultado verificar si esta la palabra clave buscada y si lo esta pues mostrar los registros que este la palabra.
  #15 (permalink)  
Antiguo 22/12/2017, 14:39
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: eliminar todo menos los caracteres alfabeticos

podria ser algo como esto:

Código MySQL:
Ver original
  1. SELECT fnStripTags('this <html>is <b>a test</b>, nothing more</html>') as campo
  2. )  where campo like '%string%'
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #16 (permalink)  
Antiguo 22/12/2017, 15:24
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 11 meses
Puntos: 10
Respuesta: eliminar todo menos los caracteres alfabeticos

Cita:
Iniciado por Libras Ver Mensaje
podria ser algo como esto:

Código MySQL:
Ver original
  1. SELECT fnStripTags('this <html>is <b>a test</b>, nothing more</html>') as campo
  2. )  where campo like '%string%'


Ese es el concepto que necesitaba, ahora sabiendo la sintaxis debo crear una funcion que haga todo lo que necesite.

Muchas gracis Libras, saludos
  #17 (permalink)  
Antiguo 22/12/2017, 15:37
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 11 meses
Puntos: 10
Respuesta: eliminar todo menos los caracteres alfabeticos

Me dado cuenta de una cosa ahora que miro bien la consulta, como le paso a la funcion fnStripTags como parametro el campo que debo filtrar que posteriormente le asigno un alias para filtrarlo, este campo que quiero pasarle a la funcion es de la tabla del primer select.

Última edición por azaz; 22/12/2017 a las 15:43
  #18 (permalink)  
Antiguo 22/12/2017, 15:51
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: eliminar todo menos los caracteres alfabeticos

echele un poquito de imaginacion mi estimado:


Código MySQL:
Ver original
  1. SELECT fnStripTags(campo_tabla) as campo from tu_tabla
  2. )  where campo like '%string%'
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #19 (permalink)  
Antiguo 22/12/2017, 15:55
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 11 meses
Puntos: 10
Respuesta: eliminar todo menos los caracteres alfabeticos

ya probe asi:
Cada tabla derivada debe tener su propio alias ese es el error que me da

probe asi:
Código MySQL:
Ver original
  1. SELECT fnStripTags('this <html>is <b>a test</b>, nothing more</html>') as campo
  2. ) as resultado where campo like '%string%'

pero me da otro error de incopatibilidad entre campos, bueno esto creo ya poder solucionarlo.
muchas gracias nuevamente.
saludos

Última edición por azaz; 22/12/2017 a las 16:07
  #20 (permalink)  
Antiguo 22/12/2017, 16:18
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 11 meses
Puntos: 10
Respuesta: eliminar todo menos los caracteres alfabeticos

ahora no me da fallo pero no me funciona no me devuelve ningun registro y deberia devolverme algunos.
  #21 (permalink)  
Antiguo 22/12/2017, 16:40
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: eliminar todo menos los caracteres alfabeticos

revisa tus resultados, primero corre la funcion sobre la tabla(o sobre algunos registros), con esto te aseguras que te regresa la informacion como la necesitas, una vez que te aseguras de esto entonces agregas la parte del subquery para filtrar los resultados que ocupas
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #22 (permalink)  
Antiguo 22/12/2017, 16:44
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 11 meses
Puntos: 10
Respuesta: eliminar todo menos los caracteres alfabeticos

lo revise la funcion funciona bien me devuleve lo que necesito pero luego no me muestra registros me da la sensacion de que no recorre las filas el primer select.
sigo investigando saludos
  #23 (permalink)  
Antiguo 22/12/2017, 16:46
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 4 meses
Puntos: 774
Respuesta: eliminar todo menos los caracteres alfabeticos

ya hiciste esto:

Código MySQL:
Ver original
  1. SELECT fnStripTags(campo_tabla) as campo from tu_tabla

Esto deberia de regresarte todos tus registros sin los tags de html, al hacerlo de este modo recorre "todos" los registros de tu tabla(o los que indiques)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #24 (permalink)  
Antiguo 22/12/2017, 17:17
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 11 meses
Puntos: 10
Respuesta: eliminar todo menos los caracteres alfabeticos

Hola si exacto eso me funciona bien me devuelve lo que quiero pero despues con el resultado busco una palabra con like como me pusistes antes pero no me devuelve nada.
  #25 (permalink)  
Antiguo 23/12/2017, 07:09
 
Fecha de Ingreso: enero-2011
Mensajes: 1.150
Antigüedad: 13 años, 11 meses
Puntos: 10
Respuesta: eliminar todo menos los caracteres alfabeticos

Lo probe ahora y funciona bien, en fin gracias nuevamente y cierro tema como solucionado.

Etiquetas: caracteres, menos, todo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:19.