begin process at 2012 02 04 17:08:26
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Trucs & Astuces

 > SQL SERVER - COMPARER DES CHAÎNES DE CARACTÈRES AVEC OU SANS ACCENTS / MAJUSCULES

SQL SERVER - COMPARER DES CHAÎNES DE CARACTÈRES AVEC OU SANS ACCENTS / MAJUSCULES


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Trucs & Astuces Classé sous :sqlserver, comparaison, accent, majuscule, minuscule Niveau :Initié Date de création :10/08/2006 Date de mise à jour :10/08/2006 23:25:55 Vu :20 344

Auteur : skweeky

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note


 Description

Comment comparer 2 chaînes de caractères avec SQL Server en ignorant la casse (les majuscules et les minuscules et/ou les accents.
Nous allons utiliser le paramètre COLLATE qui permet de régler la page de code l'ordre de tri et de comparaison.

Celà fonctionne sur SQL Server 7 et 2000, quel que soit les éditions (Express et MSDE incluses)

Cette fonctionnalité s'applique aussi au LIKE qui contrairement à ce que l'on pense peut être sensible à la casse.

De quoi dépend cette sensibilité, tout simplement du paramètre que vous renseignez à l'installation du serveur. Ensuite chaque base de données peut avoir le siens, et même chaque champ texte.

Syntaxe du COLLATE :

COLLATE PageCode_Casse_Accent_Kana_Largeur

Exemple :
Latin1_General_CI_AI

PageCode est Latin1_General ==> Alphabet Latin et ordre de tri standard
Casse est CI ==> Case Insensitive : Non sensible aux minuscules / majuscules
Accent est AI ==> Accent Insensitive : Non sensible aux accents

Dans le code ci-dessous je pars du principe que votre page de code est French, remplacez là par la votre.
Vous pourrez la retrouver par cette requête (remplacez 'VotreBaseDeDonnées' par votre base de données) :

SELECT collation_name AS [Collation],
FROM master.sys.databases
WHERE name=N'VotreBaseDeDonnées'

Source

  • -- La table
  • IF OBJECT_ID('MaTable', 'U') IS NOT NULL
  • DROP TABLE MaTable
  • GO
  • CREATE TABLE MaTable
  • (Id int identity(1,1),
  • Ch1 varchar(50),
  • Ch2 varchar(50))
  • GO
  • -- Les données de test
  • INSERT INTO MaTable(Ch1, Ch2) VALUES ('Tête','Tete')
  • INSERT INTO MaTable(Ch1, Ch2) VALUES ('Tête','TeTe')
  • INSERT INTO MaTable(Ch1, Ch2) VALUES ('Tete','TeTe')
  • INSERT INTO MaTable(Ch1, Ch2) VALUES ('Tete','Tete')
  • GO
  • -- Comparaison
  • -- Sensible aux minuscules / majuscules et aux accents
  • SELECT *
  • FROM MaTable WHERE Ch1 = Ch2 COLLATE French_BIN
  • -- Comparaison
  • -- Sensible aux minuscules / majuscules
  • SELECT *
  • FROM MaTable WHERE Ch1 = Ch2 COLLATE French_CS_AI
  • -- Comparaison
  • -- Sensible aux accents
  • SELECT *
  • FROM MaTable WHERE Ch1 = Ch2 COLLATE French_CI_AS
  • -- Comparaison
  • -- Non sensibles aux 2
  • SELECT *
  • FROM MaTable WHERE Ch1 = Ch2 COLLATE French_CI_AI
  • GO
  • -- Supprime la table
  • DROP TABLE MaTable
  • GO
-- La table
IF OBJECT_ID('MaTable', 'U') IS NOT NULL
DROP TABLE MaTable
GO

CREATE TABLE MaTable
(Id int identity(1,1),
 Ch1 varchar(50),
 Ch2 varchar(50))
GO

-- Les données de test
INSERT INTO MaTable(Ch1, Ch2) VALUES ('Tête','Tete')
INSERT INTO MaTable(Ch1, Ch2) VALUES ('Tête','TeTe')
INSERT INTO MaTable(Ch1, Ch2) VALUES ('Tete','TeTe')
INSERT INTO MaTable(Ch1, Ch2) VALUES ('Tete','Tete')
GO

-- Comparaison
--    Sensible aux minuscules / majuscules et aux accents
SELECT *
FROM MaTable WHERE Ch1 = Ch2 COLLATE French_BIN

-- Comparaison
--    Sensible aux minuscules / majuscules 
SELECT *
FROM MaTable WHERE Ch1 = Ch2 COLLATE French_CS_AI

-- Comparaison
--    Sensible aux accents
SELECT *
FROM MaTable WHERE Ch1 = Ch2 COLLATE French_CI_AS

-- Comparaison
--    Non sensibles aux 2
SELECT *
FROM MaTable WHERE Ch1 = Ch2 COLLATE French_CI_AI

GO

-- Supprime la table
DROP TABLE MaTable
GO

 Conclusion

Bonnes comparaisons


 Historique

10 août 2006 23:23:17 :
Merci à Cyril pour le requête de recherche de la collation sur la base de données
10 août 2006 23:25:55 :
X

 Sources du même auteur

SQL SERVER : VÉRIFICATION DE L'ESPACE LIBRE SUR LE SERVEUR
SQL SERVER : CONVERSION IP EN CHAÎNE DE TEXTE VERS INTEGER E...
SQL SERVER 2005 : HISTORISER LES PROCÉDURES STOCKÉES D'UNE B...
SQL SERVER 2005 : RECHERCHE DE CHAMPS PAR LEURS NOMS MULTI B...
SQL SERVER 2005 : RÉCUPÉRER LE CONTENU D'UN SCHÉMA XSD

 Sources de la même categorie

Source avec Zip Source avec une capture SQL SERVER - GENERATION AUTOMATIQUE D'UNE RETRO-DOCUMENTATIO... par FENETRES
[SQL SERVEUR] VÉRIFIER L'ESPACE OCCUPÉ DANS UNE BASE DE DONN... par Hyperion
TROUVER LES PROCHAINS ANNIVERSAIRES par zefo
REQUÊTE SQL POUR DÉTERMINER L'ESPACE OCCUPÉ DANS LES TABLESP... par sgoriaud
SQL SERVER - OBTENIR LES VALEURS CORRESPONDANT A DES UNICODE par fabrice69

 Sources en rapport avec celle ci

SQL SERVER 2000 - VIDER ET COMPACTER TOUTES LES BASES DE DON... par fabrice69
SQL SERVER 2005 : HISTORISER LES PROCÉDURES STOCKÉES D'UNE B... par skweeky
SQL SERVER 2005 : RECHERCHE DE CHAMPS PAR LEURS NOMS MULTI B... par skweeky
VALIDATION DU FORMAT DU N° DE TÉLÉPHONE AVEC TSQL par bad_smi
SQL SERVER 2000 - CREER DES INDEXES SUR UN CHAMP EXISTANT DA... par fabrice69

Commentaires et avis

Commentaire de laarousi le 12/04/2007 23:50:50

merci pour la requête.
et j'ai une petites problème:
comment je peux rechercher une valeur d'un  champs
par exemples :les clients qui ont passés les commandes.
on a deux tables :
client(num_cli,nom,prenom,age)
commande(num_com,ate_com,num_cli)

Commentaire de Promesses le 04/05/2009 18:32:30

Merci pour l'astuce

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

majuscule/minuscule avec SQL Sever [ par Thanos_the_yopper ] Bonjour, voilà, j'ai une requète ou je regarde si un champs est égal à une valeur, mais je voudrai que ce soit une égalité parfaite, y compris au niv ms access - sqlserver - procédurestockée [ par metasky ] bonjour,je suis actuellement sur une appli liant access et sqlserver...quand je consulte mes procédures stockées dans mon projet access les Problème OSQL & ACCENT [ par Bpoulain ] Bonjour, Je travaille avec SQLSERVER2000. Avec OSQL je passe des scripts sql sur une base. Tout se passe bien ... sauf dans le cas ou des accents so Quel outil pour SqlServer [ par padurand ] Mon site tourne avec une base de donnees Access, et des pages ASP.Je voudrais remplacer Access par SqlServer ... a priori il ne devrait pas y avoir de exporter des donnees de sqlserver 2005 vers access (dts) [ par tenrod ] Salut a tous ,Voila je travail avec une base sql server 2005 et je voudrais exporter le résultat d'une requete (a partir de ma base sql server) d SQLServer remplacer Null par 0 [ par BasicInstinct ] Bonjour tout le mondej'ai une requete plutot complexe qui calcule differents totaux selon des dates.lorsque pour un mois donné, je n'ai pas de va URGENT ! Majuscule par défaut [ par DarkCid ] Yaoh !Je dois mettre une contrainte dans la création d'une table pour ke le champs Nom soit obligatoirement en majuscule.G besoin d'aide svp !!! SqlServer [ par valentin013 ] Bonjour à tous, comment on peux limiter le nombre de lignes d'une requette(Top)valentin [sqlserver] SPID introuvable....... [ par Ry_Yo ] Bonjour,Mon application client/serveur tourne sur à peu près 60 postes.... Avec sqlserver2000 pour la partie BDDHors j'ai un PC sous win98 deuxième éd XML + SqlServer [ par AbriBus ] Salut,Je me met au xml, et c'est vraiment cool mais je me demandais s'il était possible de faire des requetes qui génèrent du xml avec SQL serveur 200


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,858 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales