web-dev-qa-db-ja.com

SQL Serverの2つの文字列を比較する

以下のようなSQL Server 2008ストアドプロシージャの2つの文字列を比較する方法はありますか?

int returnval = STRCMP(str1, str2)
  • 文字列が同じ場合は0を返します
  • 現在のソート順に従って、最初の引数が2番目の引数より小さい場合は-1を返します。
  • それ以外の場合は1を返します。

上記の方法は、MySQLにありますが、SQL Serverにはありません。

11
Mahender

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などを使用してUDFでこれをラップできます。
  • nULL処理が必要な場合があります(上記のコードでは、NULLは1を報告します)
  • str1とstr2は列名または@変数になります
31
gbn