SQL server ignore le cas dans une expression où
comment construire une requête SQL (MS SQL Server) où la clause "où" est insensible à la casse?
SELECT * FROM myTable WHERE myField = 'sOmeVal'
je veux les résultats de revenir en ignorant le cas
6 réponses
dans la configuration par défaut D'une base de données SQL Server, les comparaisons de chaîne sont insensibles à la casse. Si votre base de données outrepasse ce paramètre (par l'utilisation d'une collation alternative), alors vous aurez besoin de spécifier quel type de collation à utiliser dans votre requête.
SELECT * FROM myTable WHERE myField = 'sOmeVal' COLLATE SQL_Latin1_General_CP1_CI_AS
notez que la compilation que j'ai fournie n'est qu'un exemple (bien qu'elle fonctionnera probablement très bien pour vous). Un aperçu plus complet de SQL Server les classements peuvent être trouvés ici .
habituellement, les comparaisons de chaîne sont insensibles à la casse. Si votre base de données est configurée pour une compilation sensible à la casse, vous devez forcer l'utilisation d'une compilation non sensible à la casse:
SELECT balance FROM people WHERE email = 'billg@microsoft.com'
COLLATE SQL_Latin1_General_CP1_CI_AS
j'ai trouvé une autre solution ailleurs; c'est-à-utiliser
upper(@yourString)
mais tout le monde ici dit que, dans SQL Server, ça n'a pas d'importance parce que ça ignore case de toute façon? Je suis presque sûr que notre base de données est sensible à la casse.
Non, utiliser seulement LIKE
ne fonctionnera pas. LIKE
recherche des valeurs correspondant exactement à votre motif. Dans ce cas, LIKE
ne trouvera que le texte "sOmeVal" et non "someval".
une solution praticable utilise la fonction LCASE()
. LCASE('sOmeVal')
obtient la chaîne en minuscules de votre texte: 'someval'. Si vous utilisez cette fonction pour les deux côtés de votre comparaison, il travaille:
SELECT * FROM myTable WHERE LCASE(myField) LIKE LCASE('sOmeVal')
L'instruction compare deux chaînes de caractères minuscules, de sorte que votre "sOmeVal" correspondra à toutes les autres notations de "someval" (par exemple "Someval", "sOMEVAl", etc.).
dans quelle base de données êtes-vous? Avec MS SQL Server, c'est un paramètre de base de données, ou vous pouvez le gérer par requête avec le mot clé COLLATE.