Mostrando entradas con la etiqueta . Código. Mostrar todas las entradas
Mostrando entradas con la etiqueta . Código. Mostrar todas las entradas

26 junio 2012

SQL Server: Solución para ignorar lois acentos en una búsqueda

 En este sencillo ejemplo que muestro a continuación, muestro lo fácil que resulta evitar que en una búsqueda con where no haya distinciones entre las palabras con tildes o sin ellas

Así, por ejemplo me mostrará de igual modo el registro si busco por ALCALA DE GUADAIRA' como por ALCALÁ DE GUADAIRA'.

La solución está en po ner esto COLLATE SQL_LATIN1_GENERAL_CP1_CI_AI al final de la sentencia WHERE. 
 

declare @clipo1_origen varchar(40)

set @clipo1_origen='ALCALÁ DE GUADAIRA'
 
select IntIdMunicipio, StrNombre from [bd_prueba].[dbo].[municipios] where upper(StrNombre) = upper(@clipo1_origen) COLLATE SQL_LATIN1_GENERAL_CP1_CI_AI


Sin embaargo si lo que se quiere es ignorar las acentuaciones en toda la base de  datos (de modo pernanente o hasta que usted quiera desactivarlo), haga esto:

ALTER DATABASE [nombrebasededatos] COLLATE Modern_Spanish_CI_AI

Así afectará a toda la base de datos.


Saludos


10 mayo 2012

Mejora del articulo hecho para C Sharp: Función que acorta una cifra decimal para sólo mostrar dos números. Y ahora además, pone puntos de separación

  Este código es una mejora del que escribí aquí. Pero esta vez, también puntua los miles.

   private string FormatearNumero(decimal cifra )
        {
             string strCifra = Convert.ToString(cifra);
             int dondeestalacoma = strCifra.IndexOf(',');
             string partedecimal="";
             string parteentera="";
             if (dondeestalacoma != -1)
             {
                 if (strCifra.Length > (dondeestalacoma + 2))
                 {
                     partedecimal = strCifra.Substring(dondeestalacoma + 1, 2);
                     parteentera = strCifra.Substring(0, dondeestalacoma);
                 }

             }
             else
             {
                 parteentera = Convert.ToString(cifra);
                 partedecimal = ",00";
               
             }

             /*colocación de los puntos de miles*/
            /*1º Creo un arraylist. En él se introcunen los numeros y los puntos de separación. Empiezo la extración desde el último dígito de la variable parte entera.
             2º En la var. nuevonumero voy metiendo los trozos que en el paso 1 metí en el arraylist
             3 Colocación de los primeros numeros de la cifra parteentera*/
            
             ArrayList diferentespartesnumero = new ArrayList();
             int numerodepuntos = 0;
             if (parteentera.Length > 3)
             {
                 for (int i = parteentera.Length; i > 3; i -= 3)
                 {
                     string trozo = parteentera.Substring(i - 3, 3);
                     diferentespartesnumero.Add(trozo);
                     diferentespartesnumero.Add(".");
                     numerodepuntos++;
                 }

                 string nuevonumero = "";

                 for (int j = diferentespartesnumero.Count - 1; j >= 0; j--)
                     nuevonumero += diferentespartesnumero[j].ToString();

                 int resto = (parteentera.Length + numerodepuntos) - nuevonumero.Length;
                 if (resto > 0 & resto <= 3)
                 {

                     string aux2 = parteentera.Substring(0, resto);
                     parteentera = aux2 + nuevonumero;
                 }
                 else
                     parteentera = nuevonumero.Substring(1, nuevonumero.Length - 1);

                 /**/
                 
             }
            return strCifra = parteentera + "," + partedecimal;
        }