2011-07-08 921 views
9

¿Hay alguna forma de comparar dos cadenas en el procedimiento almacenado de SQL Server 2008 como se muestra a continuación?comparando dos cadenas en SQL Server

int returnval = STRCMP(str1, str2) 
  • devuelve 0 si las cadenas son las mismas
  • devuelve -1 si el primer argumento es menor que el segundo de acuerdo con el orden de clasificación actual.
  • devuelve 1 en caso contrario.

El método anterior lo encuentro en MySQL pero no en SQL Server.

Respuesta

27

no hay ninguna cadena directa función de comparación en 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 

Notas

  • puede envuelve esto a través de una UDF utilizando CREATE FUNCTION etc
  • es posible que tenga manejo de NULL (en mi código anterior, cualquier NULL informará 1)
  • str1 y str2 serán nombres de columna o @variables
+0

+1, para obtener un código más específico y simple. –

+0

Utilizará la sentencia case o la función definida por el usuario para comparar la cadena en el servidor sql. Puede verificar la función de cadena SOUNDEX y DIFFERENCE para obtener más información sobre la comparabilidad de cadenas. –

+1

@Yogesh Bhadauirya: para aclarar, SOUNDEX y DIFFERENCE no se pueden comparar alfabéticamente – gbn