Red de conocimiento informático - Material del sitio web - ¿Hay alguna forma de convertir por lotes el contenido de una tabla del chino tradicional al chino simplificado en SQL Server?

¿Hay alguna forma de convertir por lotes el contenido de una tabla del chino tradicional al chino simplificado en SQL Server?

Aunque nunca he usado esto, después de ver tu pregunta, te ayudaré a encontrar información. ¡Espero que te pueda ayudar1!

Cuando utilices una base de datos SQL, habrá dos versiones: chino simplificado y chino tradicional. Este artículo describe cómo mezclar datos en chino simplificado y tradicional en una base de datos de SQL Server.

Por ejemplo, el SQLServer utilizado en este proyecto es la versión en chino tradicional, pero es necesario utilizar los datos de otro proyecto que utiliza la versión en chino simplificado de SQLServer. Sigo la práctica habitual para colocar datos. la versión china simplificada de SQL Server. La tabla se importó a la versión china tradicional de SQL Server que se utiliza actualmente y la estructura y los datos se importaron correctamente. Al principio no me di cuenta de que había algún problema con esto. A continuación

Comencé a depurar la declaración SQL, que en realidad es una selección muy simple de datos relacionados entre dos tablas de la siguiente manera:

select table1.*, table2.*

de la tabla1

unión interna de la tabla2 a la tabla2.FK = tabla1.PK

Es lógico que una declaración tan simple no tenga ningún sentido, pero siempre indica lo siguiente en el analizador de consultas Error en el servidor: Mensaje 446, Nivel 16, Estado 9, Línea 1 No se puede resolver el conflicto de secuenciación para igual a acción.

Después de buscarlo y luego mirar la ayuda de T-SQL, descubrí que era porque importé la tabla de datos en el servidor SQL chino simplificado a la tabla de datos chino tradicional Importando junto con la tabla. El método de clasificación de los datos originales dio como resultado que el método de clasificación de la tabla de datos simplificada aún se simplificara, por lo que no se pudo realizar la comparación, lo que generó un error. La solución es especificar el método de clasificación e indicarle al analizador de consultas cómo ordenar. Aquí debe utilizar una palabra clave COLLATE Coliate, que se explica en los Libros en línea de SQL Server:

COLLATE es una cláusula que se puede aplicar a una definición de base de datos o a una definición de columna para definir reglas de intercalación, o a una cadena. Expresión para aplicar la proyección de intercalación.

Sintaxis:

COLLATE lt; nombre_colación gt;

lt; nombre_colación gt; ::=

{ nombre_colación_Windows } | }

Parámetro

collation_name

es el nombre de la intercalación aplicada a una expresión, definición de columna o definición de base de datos. collation_name puede ser simplemente Windows_collation_name o SQL_collation_name especificado.

Windows_collation_name es el nombre de la intercalación de Windows. Consulte Nombres de clasificación de Windows.

SQL_collation_name es el nombre de intercalación de la intercalación SQL. Consulte Nombre de intercalación SQL.

Entonces, ¿cómo podemos saber cuál es el nombre de intercalación actual? De hecho, este nombre de intercalación se puede seleccionar cuando creamos la base de datos (instancia), pero generalmente usaremos de forma predeterminada la configuración original. no se puede cambiar, por lo que si se trata de un servidor SQL en chino simplificado, utilizará las reglas de clasificación del chino simplificado de forma predeterminada, y si es un servidor SQL de chino tradicional, utilizará las reglas de clasificación del chino tradicional de forma predeterminada. Cuando vemos las propiedades de la base de datos (instancia), la línea inferior de la pestaña General es la regla de clasificación actual.

De forma predeterminada, el nombre de intercalación del chino simplificado es: Chinese_PRC_CI_AS, y el nombre de intercalación del chino tradicional es: Chinese_Taiwan_Stroke_CI_AS, por lo que si mezclamos nombres de intercalación simplificados y tradicionales, simplemente declare cuál desea usar. Simplemente compare de acuerdo con las reglas de clasificación. Por ejemplo, para la declaración SQL anterior, los dos métodos siguientes pueden resolver el problema del mensaje de error

SELECT Table1.*, Table2.*

FROM Table1

.

UNIÓN INTERNA Tabla2 EN Tabla2.FK = Tabla1.PK COLLATE Chinese_PRC_CI_AS

SELECCIONAR Tabla1.*, Tabla2.*

DESDE Tabla1

UNIÓN INTERNA Tabla2 ON Table2.FK = Table1.PK COLLATE Chinese_Taiwan_Stroke_CI_AS

Llevo mucho tiempo hablando de cómo solucionar los problemas causados ​​por los conflictos de intercalación. Si todavía estás interesado, aquí tienes la información sobre los libros de SQL Server. Estoy publicando en línea el concepto de reglas de clasificación para compartir con usted, de modo que no tenga que buscarlas nuevamente:

Microsoft SQL Server 2000 admite múltiples reglas de clasificación. Las intercalaciones codifican reglas que controlan el uso correcto de caracteres de un idioma (como macedonio o polaco) o de un alfabeto (como el alfabeto latino utilizado por los idiomas de Europa occidental, Latin1_General).

Cada intercalación de SQL Server especifica tres propiedades:

El orden de clasificación utilizado para los tipos de datos Unicode (nchar, nvarchar y ntext). Un orden de clasificación define la secuencia ordenada de caracteres y cómo se evalúan en las operaciones de comparación.

Orden de clasificación para tipos de datos de caracteres no Unicode (char, varchar y text).

La página de códigos utilizada para almacenar datos de caracteres que no son Unicode.

Explicación No se puede especificar la página de códigos correspondiente a los tipos de datos Unicode (nchar, nvarchar y ntext). El patrón de bits de doble byte utilizado para los caracteres Unicode está definido por el estándar Unicode y no se puede cambiar.

Las intercalaciones de SQL Server 2000 se pueden especificar en cualquier nivel. Cuando instala una instancia de SQL Server 2000, puede especificar la intercalación predeterminada para la instancia. Cada vez que crea una base de datos, puede especificar la intercalación predeterminada para esa base de datos. Si no se especifica ninguna intercalación, la intercalación predeterminada de la base de datos es la intercalación predeterminada de la instancia. Siempre que defina una columna de caracteres, una variable o un parámetro, puede especificar la intercalación de estos objetos. Si no se especifica ninguna intercalación, estos objetos se crearán utilizando la intercalación predeterminada de la base de datos.

Si todos los usuarios de la instancia de SQL Server hablan el mismo idioma, debe seleccionar una intercalación que admita ese idioma. Por ejemplo, si todos los usuarios hablan francés, seleccione la intercalación en francés.

Si su instancia de SQL Server tiene usuarios que hablan varios idiomas, debe elegir la intercalación que mejor se adapte a sus necesidades multilingües. Por ejemplo, si los usuarios generalmente hablan idiomas de Europa occidental, seleccione la intercalación Latin1_General. Cuando se brinda soporte a usuarios que hablan varios idiomas, lo más importante es utilizar los tipos de datos Unicode nchar, nvarchar y ntext para todos los datos de caracteres.

Unicode está diseñado para eliminar la dificultad de la conversión de páginas de códigos para tipos de datos char, varchar y text que no son Unicode. Debido a que las intercalaciones definen el orden utilizado para las operaciones de comparación y el orden de los caracteres Unicode, las intercalaciones aún marcan la diferencia cuando todas las columnas se implementan con tipos de datos Unicode. Incluso cuando utilice tipos de datos Unicode para almacenar datos de caracteres, debe elegir una intercalación que admita la mayoría de los usuarios en caso de que implemente una columna o variable utilizando un tipo de datos que no sea Unicode.

La intercalación de SQL Server define cómo el motor de base de datos almacena y manipula datos de caracteres y Unicode. Sin embargo, cuando los datos se mueven a la aplicación, la clasificación de caracteres y las comparaciones dentro de la aplicación están controladas por la configuración regional de Windows seleccionada en la computadora. La recopilación de datos de caracteres utilizados por una aplicación es uno de los elementos controlados por la configuración regional de Windows, que también define otros elementos como formatos de número, hora, fecha y moneda. Para Microsoft Windows NT 4.0, Microsoft Windows 98 y Microsoft Windows 95, puede utilizar la aplicación Configuración regional en el Panel de control para especificar la configuración regional de Windows. Para Microsoft Windows 2000, puede especificar la configuración regional utilizando la aplicación Opciones regionales en el Panel de control.

Para obtener más información sobre las configuraciones regionales de Windows, consulte Desarrollo de software internacional para Windows 95 y Windows NT 4.0 en la página MSDN del sitio web de Microsoft.

Varias intercalaciones pueden utilizar la misma página de códigos para datos que no son Unicode. Por ejemplo, la página de códigos 1251 define el juego de caracteres cirílicos. Varias intercalaciones como Cyrillic_General, Ucraniano y Macedonio utilizan esta página de códigos. Aunque todas estas clasificaciones utilizan el mismo conjunto de bits para representar datos de caracteres que no son Unicode, se aplican reglas de clasificación y comparación ligeramente diferentes al procesar definiciones de diccionario que determinan los caracteres correctos en un idioma o alfabeto en relación con la secuencia.

Dado que la intercalación de SQL Server 2000 controla los criterios de clasificación Unicode y no Unicode, no encontrará problemas causados ​​por especificar diferentes intercalaciones para datos Unicode y no Unicode. En versiones anteriores de SQL Server, el número de página de códigos, el orden de clasificación de los caracteres y la intercalación Unicode se especificaban por separado. Las versiones anteriores de SQL Server también admitían un número diferente de criterios de clasificación por página de códigos y proporcionaban algunas páginas de códigos con criterios de clasificación que no estaban disponibles en la configuración regional de Windows. En SQL Server 7.0, también puede especificar un orden de clasificación Unicode distinto del seleccionado para datos que no son Unicode. Esto hace que las operaciones de clasificación y comparación devuelvan resultados diferentes cuando se utilizan datos Unicode en lugar de datos que no son Unicode.