Foros del Web » Programación para mayores de 30 ;) » .NET »

revisar si el sql tiene caracteres raros

Estas en el tema de revisar si el sql tiene caracteres raros en el foro de .NET en Foros del Web. hola, buenas tardes, saludos desde Chile Es escribo porque me impusieron un desafio en el trabajo. Tenemos problemas con los caracteres raros y en la ...
  #1 (permalink)  
Antiguo 19/06/2012, 14:19
 
Fecha de Ingreso: enero-2009
Mensajes: 201
Antigüedad: 15 años, 2 meses
Puntos: 1
revisar si el sql tiene caracteres raros

hola, buenas tardes, saludos desde Chile



Es escribo porque me impusieron un desafio en el trabajo. Tenemos problemas con los caracteres raros y en la empresa me pidieron algo que no fuese invásivo o que no signifique un gran cambio en las aplicaciones. Osea que el cambio este en la clase de conección que usamos.

Entonces, necesito revisar las cadenas con sql y que el sistema pueda identificar los caracteres raros (comillas simples) y las cambie.


Esto en INSERTS, UPDATE ,SELECT Y DELETE.

Un ejemplo

Código SQL:
Ver original
  1. SELECT * FROM TABLA WHERE LUGAR = 'Región de O'higgins' and CIUDAD='Rancagua' and Comuna ='O'higgins'
Que pueda identificar las comillas dentro de cadenas y las reemplace por otro caracter u los elimine,

atento a sus sugerencias
__________________
Francisco Birrer
Arquitecto de Software e-process
http://www.universite.cl
  #2 (permalink)  
Antiguo 19/06/2012, 14:54
 
Fecha de Ingreso: febrero-2010
Ubicación: México
Mensajes: 738
Antigüedad: 14 años, 2 meses
Puntos: 37
Respuesta: revisar si el sql tiene caracteres raros

Que tal franciscomusico

No se si el post esta publicado en el lugar correcto. Puedes tratar con algo similar a lo siguiente:

Código SQL:
Ver original
  1. -- Caracteres a Quitar     
  2. SELECT @Caracteres = '-;,./´()&\ñÑ¡!?#:$%[_*@áéíóú{}' + ''''
  3.  
  4. -- Quitar Caracteres
  5. WHILE @CadenaTexto LIKE '%[' + @Caracteres + ']%'
  6. BEGIN
  7.            
  8. SELECT @CadenaTexto = REPLACE(@CadenaTexto, SUBSTRING(@CadenaTexto,
  9. PATINDEX('%[' + @Caracteres + ']%', @CadenaTexto), 1),'')
  10.        
  11. END

Con lo anterior te quita los caracteres definidos en @Caracteres que se encuentran en la variable @CadenaTexto.

Saludos.
__________________
http://ka0stj.wordpress.com/
  #3 (permalink)  
Antiguo 19/06/2012, 14:59
Avatar de Aquaventus  
Fecha de Ingreso: junio-2010
Ubicación: Lima-Peru , En el alba de la naturaleza
Mensajes: 2.105
Antigüedad: 13 años, 10 meses
Puntos: 267
Respuesta: revisar si el sql tiene caracteres raros

Definitivamente esta en el foro incorrecto. franciscomusico, para que tengas un mejor ayuda te recomiendo que lo postees en el Foro de SQL SERVER, obviamente aqui tbm te podemos ayudar, pero esto mas que todo se hace por un orden. Saludos!.
PDT: Reportaré tu mensaje para que lo coloquen en el Foro adecuado.
__________________
Internet es tener todo el conocimiento global a tu disposición.
Desarrollo de Software - Ejemplos .Net
  #4 (permalink)  
Antiguo 19/06/2012, 15:23
 
Fecha de Ingreso: enero-2009
Mensajes: 201
Antigüedad: 15 años, 2 meses
Puntos: 1
Respuesta: revisar si el sql tiene caracteres raros

gracias por responder


lo puse en este foro por lo siguiente:

la clase que estoy usando está en .net (c++ para ser exacto)
y es una funcion que recibe la sentencia y la debe trabajar.

les pongo parte del codigo que tengo


Código C++:
Ver original
  1. public String limpiarSql(String oldSql) {
  2.             //identificar que tipo de instruccion es
  3.             string[] partes;
  4.             string[] cortar;
  5.             string nuevoSql="";
  6.             String datos = "";
  7.             if (oldSql.ToUpper().IndexOf("INSERT") != -1)
  8.             {
  9.                 nuevoSql = oldSql.ToUpper().Substring(0,oldSql.IndexOf("VALUES"));
  10.                 nuevoSql += "VALUES ";
  11.                 datos = oldSql.ToUpper().Substring(oldSql.IndexOf("VALUES")+7);
  12.  
  13.             }
  14.  
  15.             if (oldSql.ToUpper().IndexOf("UPDATE")!=-1){
  16.                 nuevoSql = oldSql.ToUpper().Substring(0, oldSql.IndexOf("SET"));
  17.                 nuevoSql += "SET ";
  18.                 datos = oldSql.ToUpper().Substring(oldSql.IndexOf("SET")+4);
  19.                 string[] words = datos.Split(',');
  20.                 for (int i = 0; i<words.Length;i++)
  21.                 {
  22.                     nuevoSql += limpiarUpdate(words[i]);
  23.                 }
  24.  
  25.             }
  26.             if (oldSql.ToUpper().IndexOf("SELECT") != -1)
  27.             {
  28.                 if (oldSql.ToUpper().IndexOf("WHERE") != -1) {
  29.                     nuevoSql = oldSql.Substring(0, oldSql.ToUpper().IndexOf("WHERE"));
  30.                     nuevoSql += "WHERE ";
  31.                     datos = oldSql.ToUpper().Substring(oldSql.ToUpper().IndexOf("WHERE") + 6);
  32.                     string[] words = crearArray(datos,"SELECT");
  33.                     for (int i = 0; i < words.Length; i++)
  34.                     {
  35.                         nuevoSql += limpiarUpdate(words[i]);
  36.                     }
  37.                 }
  38.  
  39.             }
  40.            
  41.            
  42.             //INSERT
  43.  
  44.             //UPDATE
  45.             return oldSql;
  46.         }
  47.  
  48.         private String[] crearArray(string texto, String tipo) {
  49.             string nTexto  = texto.ToUpper();
  50.             string[] nArray = null;
  51.             string[] nuevoArray = null;
  52.             if (tipo == "SELECT")
  53.             {
  54.                 //agrego espacios
  55.                 nArray = texto.Split('=');
  56.                 string cadena = "";
  57.                 for (int i = 0; i < nArray.Length; i++)
  58.                 {
  59.                     cadena = nArray[i] + " = " + nArray[i+1];
  60.                     i++;
  61.                 }
  62.                 nArray = cadena.Split(' ');
  63.                 for (int i = 0; i < nArray.Length; i++)
  64.                 {
  65.                     nuevoArray.SetValue(nArray[i],nuevoArray.Length);
  66.                 }
  67.             }
  68.             return nArray;
  69.         }
  70.  
  71.         private string limpiarUpdate(string texto) {
  72.             string nuevo = "";
  73.             String[] campo = texto.Split('=');
  74.             nuevo += campo[0] + "=" + limpiarCadena(campo[1]);
  75.             return nuevo;
  76.         }
  77.  
  78.         private string limpiarCadena(String texto) {
  79.             string nTexto = "";
  80.             if (texto.Trim().EndsWith("'") & texto.Trim().StartsWith("'"))
  81.             {
  82.                 nTexto = texto.Trim().Substring(1, texto.Trim().Length - 2);
  83.                 nTexto = "'" + nTexto.Replace("'", "'")+ "'";
  84.             }
  85.             else {
  86.                 nTexto = texto;
  87.             }
  88.             return nTexto;
  89.         }

Primero, distingo que tipo de sentencia es (update, select, insert) y de acuerdo a eso busco palabras claves para poder cortar parte de la sentencia (VALUES, WHERE, SET, segun sea el caso)

y despues tengo las complicaciones ya que quiero revisar las diferentes cadenas de un update, por ejemplo, entonces a base de un cadena.split(",") busco los diferentes campos....

el problema que tengo es que pasa cuando, en un update, por ejemplo, tengo una cadena de resultados y dentro de un string viene una coma, entonces el metodo que propuse para limpiar los caracteres raros no me funciona, y ahi comienza mi problema, requiero ayuda, espero que puedan entender la problemática,

gracias

El problema lo tengo que
__________________
Francisco Birrer
Arquitecto de Software e-process
http://www.universite.cl

Etiquetas: caracteres, raros, revisar, sql, tabla, aplicaciones
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 10:05.