¿Cómo realizo una comparación insensible al acento (e con è, é, ê y ë) en SQL Server?


Estoy buscando comparar dos varchars en SQL, uno sería algo así como Cafe y el otro Café hay una manera en SQL que permitirá que los dos valores se comparen. Por ejemplo:

SELECT *
FROM Venue
WHERE Name Like '%cafe%'

Entonces, si hay un lugar con el nombre Big Bobs Café Extraordinaire se incluiría en el conjunto de resultados?

Author: gbn, 2010-03-17

4 answers

Coaccionar a un acento insensible cotejo

También deberá asegurarse de que ambos lados tengan la misma intercalación para evitar errores o coerciones adicionales si desea comparar con una variable de tabla o una columna de varchar de tabla temporal

y porque el valor constante tendrá la intercalación de la actualización de la base de datos: solo para variables locales, no para constantes no, ni siquiera entonces

SELECT *
FROM Venue
WHERE
   Name COLLATE Latin1_general_CI_AI Like '%cafe%' COLLATE Latin1_general_CI_AI
 84
Author: gbn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-26 06:47:05

Aplicando un acento específico insensible intercalación a su selección:

SELECT * 
FROM Venue 
WHERE Name COLLATE Latin1_General_CI_AI Like '%cafe%' COLLATE Latin1_General_CI_AI

El CI significa "Insensible a mayúsculas y minúsculas" y AI significa "Insensible al acento".

 40
Author: Mitch Wheat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-15 05:13:48

La búsqueda sensible al Acento y la insensible al Acento se pueden realizar usando Latin1_general_CI_AI

Aquí {[3] } es para Insensible al Acento y AS para Sensible al Acento es decir, Café y Café son lo mismo si son insensibles al acento.

En la siguiente consulta Latin1_general_CI_AI se puede dividir en las siguientes partes.

  • latin1 hace que el servidor trate cadenas usando charset latin 1, básicamente ascii.

  • CI especifica que no distingue entre mayúsculas y minúsculas, por lo que " ABC" igual a "abc".

  • AI especifica insensible al acento,por lo que 'ü' es igual a 'u'.

Su consulta debe ser la siguiente:

SELECT * FROM Venue WHERE Name COLLATE Latin1_general_CI_AI Like '%cafe%' COLLATE Latin1_general_CI_AI

El resultado esperado es el siguiente:

 Id  name
 1  Café
 2  Cafe
 3
Author: JINO SHAJI,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-22 05:12:00

If ' A ' COLLATE SQL_Latin1_General_CP1_CS_AS= 'a' COLLATE SQL_Latin1_General_CP1_CS_AS SELECCIONE N'Yes' ELSE SELECCIONE N'No '

 0
Author: Morteza Sefidi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-01 07:03:21