web-dev-qa-db-fra.com

comparer deux chaînes dans SQL Server

Existe-t-il un moyen de comparer deux chaînes dans la procédure stockée SQL Server 2008 comme ci-dessous?

int returnval = STRCMP(str1, str2)
  • renvoie 0 si les chaînes sont identiques
  • renvoie -1 si le premier argument est plus petit que le second selon l'ordre de tri actuel.
  • renvoie 1 sinon.

La méthode ci-dessus que je trouve dans MySQL mais pas dans SQL Server.

14
Mahender

Il n'y a pas de fonction de comparaison directe de chaînes dans SQL Server

CASE
  WHEN str1 = str2 THEN 0
  WHEN str1 < str2 THEN -1
  WHEN str1 > str2 THEN 1
  ELSE NULL --one of the strings is NULL so won't compare (added on edit)
END

Remarques

  • vous pouvez envelopper via un UDF en utilisant CREATE FUNCTION etc
  • vous devrez peut-être gérer NULL (dans mon code ci-dessus, tout NULL signalera 1)
  • str1 et str2 seront des noms de colonne ou @variables
31
gbn