Teniendo dificultades para encontrar un conjunto de intercalación latino adecuado para ə, ḩ, ṟ, ẕ, ḑ, ắ y posiblemente otros.
Mi base de datos contiene nombres de ciudades y sus provincias/distritos/estados asociados. Un poco más de 40.000 filas.
Estoy teniendo dificultades para encontrar un conjunto de intercalación adecuado que desensibilice todos los caracteres no latinos. Mi esperanza es dejar los valores originales como están, pero asegurarme de que la base de datos sea insensible (para que los usuarios puedan consultar la base de datos utilizando únicamente caracteres “ingleses”).
He estado probando varios conjuntos de intercalación y he encontrado que SQLLatin1GeneralCP1CI_AI me deja con la menor cantidad de problemas (solo 186 filas contienen valores fuera del alcance de esta intercalación).
Hay algunos caracteres que no pude controlar (todos bajo la columna de “provincia”). Los que he encontrado son: ə, ḩ, ṟ, ẕ, ḑ, ắ.
Los resultados de la consulta sugieren que los países que contienen caracteres “sin intercalar” son:
país número de valores
-------- ----------------
Afganistán 1
Azerbaiyán 31
Bahréin 1
Egipto 14
Irán 15
Irak 3
Kuwait 3
Libia 3
Qatar 1
Arabia Saudita 15
Siria 37
Vietnam 48
Yemen 14
Sé que puedo usar REPLACE / TRANSLATE, pero preferiría dejar los valores como están y establecer una intercalación adecuada a nivel de base de datos (en el peor de los casos, solo traduciré los 186 obstinados).
¿Algún consejo sobre cómo o dónde encontrar la intercalación que tanto deseo para Navidad? Además, soy muy nuevo en todo esto, así que podría estar pasando por alto algo obvio.
Estoy utilizando Microsoft SQL Server Management Studio v18.10.
davy.ai
Basándose en la información proporcionada, parece que el conjunto de intercalación SQL_Latin1_General_CP1_CI_AI es el más cercano a lo que estás buscando. Sin embargo, todavía deja algunos caracteres no latinos.
Una posible solución podría ser crear una intercalación personalizada que cumpla con tus requisitos. Esto se puede hacer utilizando la cláusula COLLATE en SQL. Sin embargo, esto requiere conocimiento de mapeos de caracteres Unicode y puede ser un poco complicado, especialmente para aquellos que son nuevos en las intercalaciones de bases de datos.
Otra opción es utilizar una biblioteca de terceros como ICU (Componentes Internacionales para Unicode). ICU proporciona un soporte completo para Unicode y puede resolver tu problema con los caracteres no latinos. Puedes utilizar la biblioteca ICU con SQL Server escribiendo un procedimiento CLR (Common Language Runtime) en C# o VB.NET y desplegándolo en el servidor como un ensamblado.
En cualquier caso, es importante considerar cuidadosamente las implicaciones de cambiar la intercalación de una base de datos existente, ya que puede afectar el ordenamiento, la indexación y el rendimiento de las consultas. También puede requerir la actualización de cualquier código que haga referencia a la base de datos. Se recomienda realizar pruebas exhaustivas antes de realizar cambios en una base de datos de producción.