2011-07-08 38 views
9

有沒有什麼辦法比較SQL Server 2008存儲過程中的兩個字符串?比較SQL Server中的兩個字符串

int returnval = STRCMP(str1, str2) 
  • 返回0,如果字符串相同
  • 返回-1,如果第一個參數是比根據當前的排序順序的第二較小。
  • 否則返回1。

上面的方法我在MySQL中找到,但沒有在SQL Server中找到。

回答

27

沒有直接串在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 

注意比較功能

  • 您可以使用CREATE FUNCTION等
  • 您可能需要NULL處理通過UDF包裝此(在我代碼如上,任何NULL都會報告1)
  • str1和str2將是列名或@variables
+0

+1,用於更具體和簡單的代碼。 –

+0

您將使用case語句或用戶定義的函數來比較sql server中的字符串。您可以檢查SOUNDEX&DIFFERENCE字符串函數以獲取有關字符串可比性的更多信息。 –

+1

@Yogesh Bhadauirya:澄清,聲音和差異不按字母順序 – gbn