説明
この関数は、複数の文字列を separator で区切りながら結合し、1つの文字列にするために使用されます。パラメータに NULL が含まれる場合、replace_null_value を使用して NULL を置き換えて結合し、その後、結合した文字列のMD5ハッシュ値を返します。
説明
- V4.4.x系では、この関数はV4.4.2バージョンから導入されました。
- 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