Ignorar acentos en búsquedas SQL (COLLATE)

Por 0 No tags Permalink

ALTER DATABASE COLLATE no cambia la intercalación definida para las tablas existentes, define una nueva intercalación para los nuevos objetos que se crearán en la base de datos. Si deseas aplicar la nueva intercalación para todos los objetos entonces una opción es crear una nueva base de datos con la intercalación deseada y ejecutar el script de creación de objetos y luego la importación de datos.

Por otro lado, puedes hacerlo a nivel de consulta, como puede ser el caso de Latin1_general_CI_AI. Al hacer esto, a la hora de comparar dos cadenas de texto los acentos y otros caracteres especiales se ignorarán. Por lo que al buscar por ejemplo “este”, también serán válidas cadenas de texto como “éste”.

Por ejemplo, creamos un Tabla de ciudades, agregamos 4 ciudades, si buscamos Bogotá, veremos que no lo encuentra hasta que usamos Latin1_general_CI_AI, en la clausula WHERE.

DECLARE @TablaConAcentos TABLE (Ciudades varchar(80))

INSERT INTO @TablaConAcentos VALUES('Bogotá')
INSERT INTO @TablaConAcentos VALUES('Caracas')
INSERT INTO @TablaConAcentos VALUES('Lima')
INSERT INTO @TablaConAcentos VALUES('Madrid')

SELECT * FROM @TablaConAcentos
SELECT * FROM @TablaConAcentos WHERE Ciudades LIKE '%ota%'
SELECT * FROM @TablaConAcentos WHERE Ciudades LIKE '%ota%' COLLATE Latin1_general_CI_AI

Para encontrar el uso de intercalación de nivel de instancia de SQL Server, el T-SQL que se muestra a continuación: SELECT SERVERPROPERTY(‘collation’) AS ServerCollation;

La intercalación de la base de datos predeterminada se hereda de la intercalación de instancias de SQL Server y se utiliza para la restauración de la base de datos. La intercalación se copia en la copia de seguridad cuando se crea la copia de seguridad. Para encontrar la intercalación de la base de datos actual, use el T-SQL que se muestra a continuación: SELECT name, collation_name DbCollation FROM sys.databases

Compara el precio para envíos nacionales e internacionales con hasta un 70% de ahorro.

No Comments Yet.

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *