¿Cómo se hace en SQLServer para comprar estas dos cadenas "Camión uno" == " camion uno. "?

Introducción: 

Vamos a realizar un ejemplo de cómo se puede crear una consulta en SQLServer para que permita comprar dos cadenas sin importar mayuscular, menusculas, varios espacios y tildes, para saber si son iguales.


 Entorno: 

Se realiza sobre una maquina MacBook Pro 10 con el cliente de Base de Datos DBeaver y una instalación Cloud de SQLServer.


Solución:

En SQLServer, para validar un texto con vocales con acento, podemos utilizar la función COLLATE. Esta función permite establecer una regla de ordenación y comparación para la base de datos, incluyendo la sensibilidad a las letras con acento.

Por ejemplo, si queremos validar si una cadena de texto contiene la vocal "á", podemos utilizar la función COLLATE de la siguiente manera:

sql
SELECT * FROM tabla WHERE columna COLLATE SQL_Latin1_General_CP1_CI_AI LIKE '%á%'



En este caso, SQL_Latin1_General_CP1_CI_AI es una regla de ordenación y comparación que considera las letras con acento como equivalentes a las letras sin acento (CI) y es insensible a mayúsculas y minúsculas (AI). La cláusula LIKE permite buscar una cadena de texto que contenga la vocal "á".

También es posible utilizar la función COLLATE al crear una tabla o una columna, de manera que se aplique la regla de ordenación y comparación a todos los datos almacenados en ella. Por ejemplo:

sql
CREATE TABLE tabla ( columna VARCHAR(50) COLLATE SQL_Latin1_General_CP1_CI_AI )

En este caso, la columna "columna" utilizará la regla de ordenación y comparación SQL_Latin1_General_CP1_CI_AI, lo que significa que será insensible a las diferencias entre las letras con y sin acento.



Comentarios