説明
この関数は、複数の文字列を1つの文字列に連結するために使用され、隣接する文字列間は separator で区切られます。パラメータに NULL が含まれる場合、replace_null_value を使用して NULL を置き換えて連結し、その後連結文字列のMD5ハッシュ値を計算して返します。
説明
V4.3.5バージョンでは、この関数はV4.3.5 BP4バージョンから導入されました。
注意事項
この関数はハッシュ衝突に遭遇する可能性があり、異なる入力に対して同じ結果が得られることがあります。
入力列と重複しない値を
NULL値の置き換え値として指定する必要があり、NULLに置き換えた後の結果が入力列の値と重複しないようにする必要があります。誤った使用例は以下のとおりです:MD5_CONCAT_WS('_', '@', 'a', NULL, 'b') = MD5('a_@_b') MD5_CONCAT_WS('_', '@', 'a', '@', 'b') = MD5('a_@_b')
構文
MD5_CONCAT_WS(separator, replace_null_value, str1, ... , strN)
パラメータの説明
separator:文字列。各入力値を連結する際に使用する区切り文字です。replace_null_value:文字列。入力値がNULLの場合にこの値で置き換えます。str1, ... , strN:文字列リスト。連結する入力値(可変パラメータ)。
戻り値
連結後の文字列のMD5値(32ビット16進数)を返します。
注意
separator と replace_null_value を指定する必要があり、そのうちのいずれか一方が NULL の場合、関数は NULL を返します。
例
テーブル
test_tbl1を作成します。obclient> CREATE TABLE test_tbl1 ( col1 INT PRIMARY KEY, col2 VARCHAR(20) NOT NULL, col3 VARCHAR(50) );テストデータを挿入します。
obclient> INSERT INTO test_tbl1 VALUES (1, 'A1', NULL), (2, 'A2', 'OceanBase'), (3, 'A3', 'DATABASE'), (4, 'A4', NULL), (5, 'A5', 'TABLEGROUP');実行結果は次のとおりです:
Query OK, 5 rows affected Records: 5 Duplicates: 0 Warnings: 0テーブル
test_tbl1の列col1、col2、col3を_で連結して文字列を作成し、その中でNULL値は@に置き換えてから、MD5ハッシュ値を生成します。obclient> SELECT MD5_CONCAT_WS('_', '@', t1.col1, t1.col2, t1.col3) FROM test_tbl1 t1;実行結果は次のとおりです:
+----------------------------------------------------+ | MD5_CONCAT_WS('_', '@', t1.col1, t1.col2, t1.col3) | +----------------------------------------------------+ | 7df704a058d6e9293f01ae16c5c01fef | | a7518a709f593d475604511ab528351d | | fcd7a30f8897edfaf2f725aafc6af30c | | 1ad84ebb99c253544f2341f9c2b5dd57 | | 26bb87a94aad329bae3d9cfb10b5614c | +----------------------------------------------------+ 5 rows in set