Mélange de données traditionnel et simplifié, SQL Server questions



Société qui utilisera la base de données chinois simplifié et traditionnel versions chinoises. J'ai utilisé ce projet est la version traditionnelle chinoise de SQLServer, mais vous devez utiliser pour une autre utilisation de la version chinoise simplifiée de données SQLServer projet, j'ai suivi la pratique habituelle de la version chinois simplifié de SQLServer dans un tableau de données en chinois traditionnel est utilisé version de SQL Server, la structure et les données en un succès. J'ai commencé et ne se rendent pas compte ce serait un problème. Puis j'ai commencé à déboguer des requêtes SQL est très simple de deux tableaux associés à la sélection des données comme suit:

Sélectionnez table1 .*, table2 .*

à partir de table1

INNER JOIN table2 sur table2.FK = table1.PK

Logiquement une telle déclaration simple qui va donner un sens à tout problème, mais dans l'Analyseur de requêtes qui pousse toujours l'erreur suivante

Server: 446 Msg, Niveau 16, État 9, Ligne 1

Égale à l'action ne peut pas résoudre le conflit de classement.

Ensuite, la recherche d'un moment, puis regarda l'aide de T-SQL, sais seulement que je vais parce que les données en chinois simplifié dans les tableaux de données SQL Server dans la table traditionnelle chinoise qui, avec les données d'origine, une sorte et les importations, résultant en forme simplifiée le type de données est encore simplifiée, donc je ne peux pas comparer à une erreur. La solution est de trier par nom, a raconté comment l'Analyseur de requêtes peuvent être triés. Ici, vous devez utiliser un mot-clé COLLATE Coliate dans la rubrique Livres en ligne SQL Server est expliqué dans:

COLLATE

Une clause peut être appliquée à une définition de base de données ou d'une définition de la colonne de définir les règles de tri, ou utilisé dans l'expression collation de la chaîne d'appliquer la projection.

Syntaxe:

collation_name COLLATE

Collation_name :: =

(Windows_collation_name) | (SQL_collation_name)

Paramètre

collation_name

Est utilisé dans les expressions, la définition de la définition de la colonne ou le nom de la collation de base de données. collation_name ne pouvez spécifier Windows_collation_name ou SQL_collation_name.

Windows_collation_name

classement Windows est le nom de classement. Voir le nom de classement Windows.

SQL_collation_name

classement SQL est le nom de classement. Voir le nom de classement SQL.

Alors, comment pouvons-nous savoir le nom du classement actuel est ce qui, en fait, le nom de la collation est que nous créons la base de données (par exemple), vous pouvez choisir l'heure, mais en général, nous allons mettre la valeur par défaut d'origine, pas un changement de son, donc si le SQLServer chinois simplifié Chinois simplifié utilisera les règles de tri par défaut, et si le SQLServer est Chinois Traditionnel Chinois Simplifié utilisera le classement par défaut. Nous nous penchons sur la base de données (par exemple) de la propriété, l'onglet Général de la ligne de fond est que le classement actuel. Dans le cas de défaut, le nom simplifié de classement chinois est: Chinese_PRC_CI_AS, et le nom traditionnel classement chinois est: Chinese_Taiwan_Stroke_CI_AS, nous avons simplifié si le nom de classement de la composition traditionnelle du temps, tant que la déclaration sur ce que vous voulez utiliser le courant type de règles de tri peut être comparé, par exemple, que la déclaration ci-dessus SQL, les deux méthodes suivantes pour résoudre le problème que les erreurs

SELECT Table1 .*, Table2 .*

FROM Table1

INNER JOIN Table2 ON = Table2.FK Chinese_PRC_CI_AS Table1.PK COLLATE

SELECT Table1 .*, Table2 .*

FROM Table1

INNER JOIN Table2 ON = Table2.FK Chinese_Taiwan_Stroke_CI_AS Table1.PK COLLATE

C'est depuis longtemps à résoudre les problèmes causés par le conflit de classement, s'il ya des intéressés, après quoi le SQL Server en ligne sur le concept de règles de tri ont été affectés à partager avec vous, pour nous sauver, puis aller à:

Microsoft? SQL Server? 2000 prend en charge les classements multiples. règles de tri pour contrôler la bonne utilisation de la langue (comme les macédoniens ou polonais) ou de l'alphabet (comme les langues d'Europe occidentale utiliser l'alphabet latin Latin1_General) les règles de codage de caractères.

Chaque classement SQL Server spécifie trois propriétés:

Pour les types de données Unicode (nchar, nvarchar et ntext) dans l'ordre de tri. ordre de tri défini séquence de tri de caractères, et les opérations de comparaison sur les caractères de la valeur de la méthode.

Pour les données de caractères non-Unicode types (char, varchar, et de texte) de l'ordre de tri.

Utilisé pour stocker des données de caractères non-Unicode de la page de code.

Aide ne pouvez pas spécifier les types de données Unicode (nchar, nvarchar et ntext) la page de code correspondant. Pour les caractères Unicode codés sur deux octets par le standard Unicode définit modèles bits et ne peut pas être changé.

Peut être spécifié à n'importe quel niveau de SQL Server 2000 collation. Installez SQL Server 2000 par exemple, permet de spécifier le classement par défaut de l'instance. Chaque fois que vous créez la base de données, peuvent être affectés à la collation par défaut de la base de données. Si vous ne spécifiez pas le classement de la collation par défaut de base de données exemple est la collation par défaut. Chaque fois que la définition de la colonne de caractères, variable ou un paramètre permet de spécifier le classement de ces objets. Si le classement n'est pas précisé, va utiliser la collation de base de données par défaut pour créer ces objets.

Si l'instance SQL Server que tous les utilisateurs utilisent le même langage doit être choisi de soutenir le classement de la langue. Par exemple, si tous les utilisateurs parlent français, choisissez classement français.

Si les langues SQL Server par exemple l'utilisateur doit être choisi sur les besoins multilingues de fournir le meilleur support pour la collation. Par exemple, si un utilisateur d'une manière générale langues d'Europe occidentale, sélectionnez classement Latin1_General. Lorsque le soutien de l'utilisateur multilingue, toutes les données de caractères en utilisant des données Unicode nchar types, nvarchar et ntext est le plus important. Unicode vise à éliminer les non-Unicode char, varchar difficultés et le code type de données texte page de conversion. Collation des fins de comparaison parce que la définition de l'ordre d'opération et de l'ordre de tri Unicode caractères, l'utilisation de types de données Unicode pour atteindre toutes les colonnes, le tri des règles différentes. Même lorsque vous utilisez les types de données Unicode stocker des données de caractère, la plupart des utilisateurs devraient être choisi de soutenir la collecte, pour empêcher l'utilisation de la colonne de type non-Unicode de données ou variable à obtenir.

Collation SQL Server Database Engine pour stocker et exploiter la définition du caractère et des données Unicode. Toutefois, lorsque les données transférées dans l'application après l'application pour le tri et la comparaison des caractères sélectionnés par le contrôle informatisé des paramètres régionaux de Windows. Application utilise la compilation de données caractère de celle de contrôle sous Windows Paramètres régionaux de l'paramètres régionaux définit également d'autres projets, tels que les numéros, heure, date et format monétaire. Pour Microsoft Windows NT 4.0?, Microsoft Windows? 98 et Microsoft Windows 95, utilisez le panneau de contrôle "Paramètres régionaux" d'application spécifié les paramètres régionaux de Windows. Pour Microsoft Windows 2000, utilisez le "Panneau de configuration" dans le "Regional Options" application spécifiée locale. Les paramètres régionaux de Windows pour plus d'informations, s'il vous plaît voir les sites web Microsoft MSDN? Page développement international de logiciels pour Windows 95 et Windows NT 4.0.

Nombre de classement non-Unicode de données peuvent utiliser la même page de code. Par exemple, la page de code 1251 définit le jeu de caractères cyrilliques. règles de tri multiples (comme Cyrillic_General, l'ukrainien et le macédonien) utiliser la page de code. Bien que ces règles sont le même genre de bits pour représenter les données de caractères non-Unicode, mais lorsqu'il s'agit de définitions de dictionnaire, de tri et de règles de comparaison s'applique légèrement différente, et les définitions du dictionnaire de la langue ou les règles de tri alphabétique associé à des personnages correcte séquence.

Parce que SQL Server 2000 de contrôle classement Unicode et l'ordre de tri non-Unicode, de sorte qu'il ne rencontrera pas les données non-Unicode en Unicode et spécifier un classement différent a causé le problème. Dans les versions antérieures de SQL Server sur le numéro de page de code, l'ordre de tri et de classement des caractères Unicode spécifié séparément. Les versions antérieures de SQL Server prend également en charge un nombre différent pour chaque code de l'ordre de tri page, et de fournir des pages de code dans certains paramètres régionaux de Windows n'est pas l'ordre de tri. Dans SQL Server 7.0, vous pouvez également spécifier la sélection des données de l'ordre de tri non Unicode autres que l'ordre de tri Unicode. Cela se traduira par l'utilisation et des données non-Unicode relative des données Unicode, le tri et de comparaison renvoyer des résultats différents.