2011-07-08 14 views
9

Czy istnieje sposób porównać dwa ciągi w SQL Server 2008 procedura przechowywana jak poniżej?Porównywanie dwóch ciągów w SQL Server

int returnval = STRCMP(str1, str2) 
  • powraca 0 jeśli łańcuchy są takie same
  • powraca -1 Jeśli pierwszy argument jest mniejszy niż drugi, zgodnie z aktualnym porządku sortowania.
  • zwraca 1 w przeciwnym wypadku.

Powyższa metoda znajduje się w MySQL, ale nie w SQL Server.

Odpowiedz

27

Nie ma bezpośredniego ciąg porównanie funkcji w 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 

Notatki

  • można zawija to poprzez UDF za pomocą funkcji Create itp
  • może trzeba obsługi NULL (w moim kod powyżej, dowolny NULL zgłosi 1)
  • str1 i str2 będą nazwami kolumn lub @zmiennych
+0

+1, aby uzyskać bardziej szczegółowy i prosty kod. –

+0

Użyjesz instrukcji case lub funkcji zdefiniowanych przez użytkownika, aby porównać ciąg znaków w serwerze sql. Możesz sprawdzić funkcję łańcucha SOUNDEX i DIFFERENCE, aby uzyskać więcej informacji na temat porównywalności łańcuchów. –

+1

@Yogesh Bhadauirya: Aby wyjaśnić, SOUNDEX i RÓŻNICA nie są porównywane alfabetycznie – gbn

Powiązane problemy