Comment définir le classement pour une connexion à SQL Server?
Comment puis-je définir le classement par SQL Server pour la durée de cette connexion?
Pas jusqu'à me connecter à SQL Server puis-je savoir ce classement que je veux utiliser.
par exemple un navigateur avec la langue fr-IT
est connecté sur le web-site. Toutes les requêtes, je tourne sur cette connexion je veux suivre les langue française, de l'Italie variante classement.
j'ai la vision d'un hypothétique au niveau de la connexion de la propriété, simlar à SET ANSI_NULLS OFF
, mais pour le classement1:
SET COLLATION_ORDER 'French_CI_AS'
SELECT TOP 100 FROM Orders
ORDER BY ProjectName
et plus tard
SELECT * FROM Orders
WHERE CustomerID = 3277
AND ProjectName LIKE '%l''ecole%'
et plus tard
UPDATE Quotes
SET IsCompleted = 1
WHERE QuoteName = 'Cour de l''école'
En même temps, quand un chinois client se connecte:
SET COLLATION_ORDER Chinese_PRC_CI_AI_KS_WS
SELECT TOP 100 FROM Orders
ORDER BY ProjectName
ou
SELECT * FROM Orders
WHERE CustomerID = 3277
AND ProjectName LIKE '學校'
ou
UPDATE Quotes
SET IsCompleted = 1
WHERE QuoteName = '學校的操場'
Maintenant, je pourrait de modifier tous SELECT
instruction dans le système, pour me permettre de passer dans un classement:
SELECT TOP 100 FROM Orders
WHERE CustomerID = 3278
ORDER BY ProjectName COLLATE French_CI_AS
Mais vous ne pouvez pas passer un ordre de collation comme un paramètre à une procédure stockée:
CREATE PROCEDURE dbo.GetCommonOrders
@CustomerID int, @CollationOrder varchar(50)
AS
SELECT TOP 100 FROM Orders
WHERE CustomerID = @CustomerID
ORDER BY ProjectName COLLATE @CollationOrder
Et la COLLATE
clause ne peut pas m'aider lors de l'exécution d'un UPDATE
ou un SELECT
.
Remarque: Toutes les colonnes de la chaîne dans la base de données sont déjà nchar
, nvarchar
ou ntext
. je ne parle pas le classement par défaut appliqué à un serveur, base de données, de table ou de colonne pour les colonnes non-unicode (c'est à dire char
, varchar
, text
). je parle du classement utilisé par SQL Server lors de la comparaison et de tri de chaînes.
Comment puis-je spécifier parconnexion classement?
Voir aussi
- Même question, mais pour ADO.net et les chaînes de connexion
- Même question, mais pour ASP.net MVC2 et MySQL
1 hypothétique sql qui présente les paramètres régionaux questions
Ce n'est pas entièrement une propriété d'une base de données, les tables et les colonnes. Il peut être une propriété d'un
ORDER BY
.Malheureusement, cette question, bien que pertinente, n'a pas de réponse. @devio est droit.
Dans votre déclaration que vous écrivez RASSEMBLER sur une ligne distincte après l'instruction SQL. C'est trompeur, car les RASSEMBLER appartient à la dernière colonne de la clause ORDER BY. Suppression de l'ORDRE, et ce sera un échec.
OriginalL'auteur Ian Boyd | 2011-08-26
Vous devez vous connecter pour publier un commentaire.
Comme marc_s commenté, le classement est une propriété d'une base de données ou une colonne, et non pas d'une connexion.
Cependant, vous pouvez remplacer le classement sur déclaration de niveau à l'aide de la ASSEMBLER mot-clé.
À l'aide de votre exemples:
Encore, je ne trouve pas une déclaration sur l'utilisation de l'ASSEMBLER avec une dynamique de nom de classement, laissant comme seule solution possible SQL dynamique et EXEC. Voir ce social.MSDN entrée pour un exemple.
ProjectName
index doit avoir de l'ordre; cet ordre vient de la colonne de tri. Arbitraire de l'application d'un classement différent lors de l'exécution de la recherche d'index nie toute indicesOriginalL'auteur devio