Je cherche à comparer deux varchars en SQL, l’un ressemblant à Cafe
et l’autre Café
permettant de comparer les deux valeurs en SQL. Par exemple:
SELECT *
FROM Venue
WHERE Name Like '%cafe%'
Donc, s’il existe une salle portant le nom Big Bobs Café Extraordinaire
, elle serait incluse dans le jeu de résultats?
Forcer à un accent insensible collation
Vous devrez également vous assurer que les deux côtés ont le même classement pour éviter les erreurs ou des contraintes supplémentaires si vous souhaitez comparer une variable de table ou une colonne de table varchar
et parce que la valeur constante aura le classement de la base de données Update: uniquement pour les variables locales, pas pour les constantes non, même pas alors
SELECT *
FROM Venue
WHERE
Name COLLATE Latin1_general_CI_AI Like '%cafe%' COLLATE Latin1_general_CI_AI
En appliquant un accent spécifique insensible collation à votre choix:
SELECT *
FROM Venue
WHERE Name COLLATE Latin1_General_CI_AI Like '%cafe%' COLLATE Latin1_General_CI_AI
Le CI signifie "Case Insensitive" et AI pour "Accent Insensitive".
Accent Sensitive et Accent Insensitive La recherche peut être effectuée à l'aide de Latin1_general_CI_AI
Ici AI
est pour Accent Insensitive et AS
pour Accent Sensitiveie, Café et Café sont identiques si Accent Insensitive.
Dans la requête ci-dessous, Latin1_general_CI_AI
peut être décomposé en plusieurs parties.
latin1
fait que le serveur traite les chaînes en utilisant le jeu de caractères latin 1, essentiellement ascii.
CIspécifie la casse, ainsi "ABC" est égal à "abc".
Votre requête devrait être comme suit:
SELECT * FROM Venue WHERE Name COLLATE Latin1_general_CI_AI Like '%cafe%' COLLATE Latin1_general_CI_AI
Attendu Résultat est le suivant:
Id name
1 Café
2 Cafe
si 'A' COLLATE SQL_Latin1_General_CP1_CS_AS = 'a' COLLATE SQL_Latin1_General_CP1_CS_ASSELECT N'yes '.