MySQL には、文字列を返す多数の演算子と関数があります。 このセクションでは、そのような文字列のキャラクタセットと照合順序について解説しています。
文字列の入力を取得して文字列の結果を出力として返す単純な関数では、出力のキャラクタセットおよび照合順序は主要な入力のキャラクタセットおよび照合順序と同じです。たとえば UPPER(X) は、キャラクタセットおよび照合が X と一致する文字列を返します。
同じことは以下についても当てはまります。
INSTR(), LCASE(), LOWER(), LTRIM(), MID(), REPEAT(), REPLACE(), REVERSE(), RIGHT(), RPAD(), RTRIM(), SOUNDEX(), SUBSTRING(), TRIM(), UCASE(), UPPER()。
(注意: REPLACE() 関数は他のすべての関数とは異なり、文字列入力の照合順序を無視し、大文字と小文字が区別されない比較を毎回実行します。)
複数の文字列入力を組み合わせて単一の文字列出力を返す操作には、SQL-99 の ``集約ルール'' が適用されます(以下を参照)。
明示的な COLLATE X が存在する場合は X を使用する。
明示的な COLLATE X と COLLATE Y が存在する場合はエラーになる。
上記以外の場合ですべての照合順序が X であるときは X を使用する。
その他の場合、結果に照合順序は含まれない。
たとえば、CASE ... WHEN a THEN b WHEN b THEN c COLLATE X END と指定されている場合、照合順序は X になります。同じことは以下についても当てはまります。
CONCAT(), GREATEST(), IF(), LEAST(), CASE, UNION, ||, ELT()。
文字データに変換する操作のため、結果文字列のキャラクタセットと照合順序は 接続/リテラルキャラクタセットに含まれており、接続/リテラル照合順序を持っています。
このことは以下についても当てはまります。
CHAR(), CAST(), CONV(), FORMAT()。
HEX(), SPACE()。