| 名前 | 説明 |
|---|---|
ASCII() |
左端のキャラクタの数値を返します |
BIN() |
引数の文字列表現を返します |
BIT_LENGTH() |
引数の長さをビット単位で返します |
CHAR_LENGTH() |
引数のキャラクタ数を返します |
CHAR() |
渡された各整数のキャラクタを返します |
CHARACTER_LENGTH() |
CHAR_LENGTH() の同義語 |
CONCAT_WS() |
区切り文字を使った連結を返します |
CONCAT() |
連結した文字列を返します |
ELT() |
インデックス番号の位置にある文字列を返します |
EXPORT_SET() |
値 bits で設定されている各ビットには on 文字列が返され、設定されていない各ビットには off が返されます |
FIELD() |
後続の引数での第 1 引数のインデックス (位置) を返します |
FIND_IN_SET() |
第 2 引数内での第 1 引数のインデックス位置を返します |
FORMAT() |
小数点以下の桁数が指定された数になるようにフォーマットされた数値を返します |
HEX() |
10 進値または文字列値の 16 進表現を返します |
INSERT() |
部分文字列を、指定された位置に指定されたキャラクタ数だけ挿入します |
INSTR() |
部分文字列の最初の出現箇所のインデックスを返します |
LCASE() |
LOWER() の同義語 |
LEFT() |
左端から指定された数のキャラクタを返します |
LENGTH() |
文字列の長さをバイト単位で返します |
LIKE |
単純なパターンマッチング |
LOAD_FILE() |
指定されたファイルを読み込みます |
LOCATE() |
部分文字列の最初の出現箇所の位置を返します |
LOWER() |
引数を小文字に変換して返します |
LPAD() |
文字列引数を指定された文字列を使って左からパディングし、その結果を返します |
LTRIM() |
先頭の空白を削除します |
MAKE_SET() |
設定ビット内に対応するビットを持つ一連の文字列をコンマで区切ったものを返します |
MATCH |
フルテキスト検索を実行します |
MID() |
指定された位置から始まる部分文字列を返します |
NOT
LIKE |
単純なパターンマッチングを否定します |
NOT
REGEXP |
REGEXP を否定します |
OCTET_LENGTH() |
LENGTH() の同義語 |
ORD() |
引数の左端のキャラクタのキャラクタコードを返します |
POSITION() |
LOCATE() の同義語 |
QUOTE() |
SQL ステートメント内で使用できるように引数をエスケープします |
REGEXP |
正規表現を使用したパターンマッチング |
REPEAT() |
文字列を指定された回数だけ繰り返します |
REPLACE() |
指定された文字列の出現箇所に対して置換を行います |
REVERSE() |
文字列内のキャラクタを逆順に並べ替えます |
RIGHT() |
右端から指定された数のキャラクタを返します |
RLIKE |
REGEXP の同義語 |
RPAD() |
末尾に指定された回数だけ文字列を追加します |
RTRIM() |
末尾の空白を削除します |
SOUNDEX() |
soundex 文字列を返します |
SOUNDS
LIKE(v4.1.0) |
サウンドを比較します |
SPACE() |
指定された数の空白から成る文字列を返します |
STRCMP() |
2 つの文字列を比較します |
SUBSTR() |
指定された部分文字列を返します |
SUBSTRING_INDEX() |
文字列内で区切り文字が指定された数だけ出現するまでの部分文字列を返します |
SUBSTRING() |
指定された部分文字列を返します |
TRIM() |
先頭と末尾にある空白を削除します |
UCASE() |
UPPER() の同義語 |
UNHEX()(v4.1.2) |
16 進数の各ペアをキャラクタに変換します |
UPPER() |
大文字に変換します |
文字列値の関数は、結果の長さが
max_allowed_packet
システム環境変数より長くなると、NULL
を返します。項4.5.3. 「サーバーパラメータのチューニング」
を参照してください。
文字列の位置を演算する関数では、最初の位置は 1 と数値付けられます。
長さを引数に取る関数の場合、整数でない引数はもっとも近い整数に丸められます。
文字列 str
の左側の文字の数値を返します。str
が空の文字列である場合は、0
を返します。str が
NULL である場合は
NULL
を返します。ASCII()
は、キャラクタが 8
ビットの場合に正しく動作します。
mysql>SELECT ASCII('2');-> 50 mysql>SELECT ASCII(2);-> 50 mysql>SELECT ASCII('dx');-> 100
ORD()
関数も併せてご参照ください。
N
のバイナリ値の文字列表現を返します。N
は longlong
(BIGINT)
数字です。これは、CONV(
に等価になります。N,1000.2)N が
NULL である場合は
NULL を返します。
mysql> SELECT BIN(12); -> '1100'
文字列 str
の長さをビットで返します。
mysql> SELECT BIT_LENGTH('text'); -> 32
CHAR(
N,...
[USING charset_name])
CHAR()
各引数 N
を整数として解釈し、それらの整数のコード値によって与えられた文字を構成する文字列を返します。NULL
値はとばされます。
mysql>SELECT CHAR(77,121,83,81,'76');-> 'MySQL' mysql>SELECT CHAR(77,77.3,'77.3');-> 'MMM'
255 より大きい
CHAR()
引数は複数結果バイトに変換されます。たとえば、CHAR(256)
は CHAR(1,0)
に等しく、CHAR(256*256)
は CHAR(1,0,0)
に等しいことになります :
mysql>SELECT HEX(CHAR(1,0)), HEX(CHAR(256));+----------------+----------------+ | HEX(CHAR(1,0)) | HEX(CHAR(256)) | +----------------+----------------+ | 0100 | 0100 | +----------------+----------------+ mysql>SELECT HEX(CHAR(1,0,0)), HEX(CHAR(256*256));+------------------+--------------------+ | HEX(CHAR(1,0,0)) | HEX(CHAR(256*256)) | +------------------+--------------------+ | 010000 | 010000 | +------------------+--------------------+
デフォルトにより、CHAR()
はバイナリ列を返します。与えられたキャラクタセットで文字列を生成するには、オプションの
USING 節を使用します
:
mysql> SELECT CHARSET(CHAR(0x65)), CHARSET(CHAR(0x65 USING utf8)); +---------------------+--------------------------------+
| CHARSET(CHAR(0x65)) | CHARSET(CHAR(0x65 USING utf8)) | +---------------------+--------------------------------+
| binary | utf8 | +---------------------+--------------------------------+
USING
が与えられ、結果文字列が与えられたキャラクタセットにとって不当になる場合は、警告が発行されます。また、厳密な
SQL
モードが有効にされた場合は、CHAR()
からの結果は NULL
になります。
文字で測られた文字列 str
の長さを返します。マルチバイト文字は、1
文字として数えられます。つまり、2
バイトの文字を 5
つ含む文字列には、CHAR_LENGTH()
は 5
を返すところを、LENGTH()
は 10 を返します。
CHARACTER_LENGTH()
is a synonym for
CHAR_LENGTH().
引数を連結した結果である文字列を返します。ひとつ以上の引数を持つ場合があります。すべての引数が非バイナリ列の場合、結果は非バイナリ列になります。引数がひとつでもバイナリ列を含む場合は、結果はバイナリ列になります。数値の引数はそれに等しいバイナリ列形態に変換されます。それを避けたい場合は、次の例のように、明示的な型キャストを使用することができます :
SELECT CONCAT(CAST(int_colAS CHAR),char_col);
引数のどれかが
NULL
である場合、CONCAT()
は NULL を返します。
mysql>SELECT CONCAT('My', 'S', 'QL');-> 'MySQL' mysql>SELECT CONCAT('My', NULL, 'QL');-> NULL mysql>SELECT CONCAT(14.3);-> '14.3'
引用符で囲まれた文字列が複数存在する場合、それらの文字列を順次並べることで連結が実行されます。
mysql> SELECT 'My' 'S' 'QL'; -> 'MySQL'
CONCAT_WS(
separator,str1,str2,...)
CONCAT_WS() は
Concatenate With Separator (セパレータと連結)
を意味しており、CONCAT()
の特殊な形態です。最初の引数が、残りの引数のセパレータになります。セパレータは、連結される文字列の間に追加されます。セパレータは、あとの引数と同じく、文字列である場合があります。セパレータが
NULL
の場合は、結果は
NULL になります。
mysql>SELECT CONCAT_WS(',','First name','Second name','Last Name');-> 'First name,Second name,Last Name' mysql>SELECT CONCAT_WS(',','First name',NULL,'Last Name');-> 'First name,Last Name'
CONCAT_WS()
は空の文字列をとばしません。しかし、セパレータ引数のあとの
NULL
値はすべてとばします。
N =
1 の場合は
str1
を返し、N =
2 の場合は
str2
を返す、というふうに続きます。N
が 1
以下か、引数の数より大きければ、NULL
を返します。ELT()
は FIELD()
の補数です。
mysql>SELECT ELT(1, 'ej', 'Heja', 'hej', 'foo');-> 'ej' mysql>SELECT ELT(4, 'ej', 'Heja', 'hej', 'foo');-> 'foo'
EXPORT_SET(
bits,on,off[,separator[,number_of_bits]])
値 bits
で設定されている各ビットを
on
文字列で表し、値で設定されていない各ビットを
off
文字列で表した場合に得られる文字列を返します。bits
のビットは右から左に検査されます
(下位ビットから上位ビット)
。文字列は、separator
文字列 (デフォルトはコンマ
「,」)
で区切られた結果の左から右意へ追加されます。検査されたビットの数は
number_of_bits
によって与えられます (デフォルトでは 64) 。
mysql>SELECT EXPORT_SET(5,'Y','N',',',4);-> 'Y,N,Y,N' mysql>SELECT EXPORT_SET(6,'1','0',',',10);-> '0,1,1,0,0,0,0,0,0,0'
str1
、str2
、str3
、... リストの
str の開始位置
(ポジション)
を返します。str
が見つからない場合は、0
を返します。
FIELD()
へのすべての引数が文字列の場合、すべての引数は文字列として比較されます。すべての引数が数値の場合、それらは数値として比較されます。それ以外は、引数は
double として比較されます。
str が
NULL
である場合、NULL
はどのような値との比較でも等価にならないため、戻り値は
0
になります。FIELD()
は ELT()
の補数です。
mysql>SELECT FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo');-> 2 mysql>SELECT FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo');-> 0
文字列 str が
N
サブ文字列で構成される文字列リスト
strlist 内にある場合は、1
から N
の範囲の値を返します。文字列リストは、「,」
文字で区切られた部分文字列で構成された文字列です。最初の引数が定数列で、2
番目が型
SET
のカラムの場合、FIND_IN_SET()
関数はビット演算を使用するために最適化されます。str
が strlist
内にない場合、または
strlist
が空の文字列の場合は、0
を返します。引数のどちらかが
NULL である場合は
NULL
を返します。この関数は、最初の引数がコンマ
(「,」)
文字を含む場合は正常に作動しません。
mysql> SELECT FIND_IN_SET('b','a,b,c,d'); -> 2
数値 X
を「'#,###,###.##」のような形式にフォーマットして小数第
D
位までに丸め、その結果を文字列として返します。D
が 0
の場合、結果は小数点または小数部を持ちません。
mysql>SELECT FORMAT(12332.123456, 4);-> '12,332.1235' mysql>SELECT FORMAT(12332.1,4);-> '12,332.1000' mysql>SELECT FORMAT(12332.2,0);-> '12,332'
N_or_S
が数字の場合、N の 16
進値の文字列表現を返します。N
は longlong
(BIGINT)
数です。これは、CONV(
に等価になります。
N,1000.16)
N_or_S
が文字列の場合は、N_or_S
の各文字が二桁の 16
進数に変換される、N_or_S
の 16
進数字列表現を返します。この演算の逆演算を実行するには、UNHEX()
関数を使用します。
mysql>SELECT HEX(255);-> 'FF' mysql>SELECT 0x616263;-> 'abc' mysql>SELECT HEX('abc');-> 616263
文字列 str を、位置
pos
で始まるサブ文字列と、文字列
newstr に置換された
len
文字長と共に返します。pos
が文字列の長さに収まらない場合は、元の文字列を返します。len
が残りの文字列の長さに収まらない場合は、位置
pos
からの残りの文字列を置換します。引数のどれかが
NULL である場合は
NULL を返します。
mysql>SELECT INSERT('Quadratic', 3, 4, 'What');-> 'QuWhattic' mysql>SELECT INSERT('Quadratic', -1, 4, 'What');-> 'Quadratic' mysql>SELECT INSERT('Quadratic', 3, 100, 'What');-> 'QuWhat'
この関数はマルチバイトでも安全です。
文字列 str 内のサブ文字列
substr
の最初の発生の位置を返します。これは、LOCATE()
の引数がふたつのフォームの、引数の順番が逆になったものとと同じですが、
mysql>SELECT INSTR('foobarbar', 'bar');-> 4 mysql>SELECT INSTR('xbar', 'foobar');-> 0
この関数はマルチバイトでも安全で、少なくともひとつの引数がバイナリ列である場合は、大文字小文字の区別が必須です。
LCASE() is a
synonym for
LOWER().
文字列 str からの左側の
len 文字を返し、引数が
NULL である場合は
NULL を返します。
mysql> SELECT LEFT('foobarbar', 5); -> 'fooba'
バイトで測られた文字列
str
の長さを返します。マルチバイト文字は、マルチバイトとして数えられます。つまり、2
バイトの文字を 5
つ含む文字列には、CHAR_LENGTH()
は 5
を返すところを、LENGTH()
は 10 を返します。
mysql> SELECT LENGTH('text'); -> 4
ファイルを読み取り、その内容を文字列として返します。この関数を使用するには、ファイルがサーバーホストに置かれていなければならないのと、ファイルへのフルパス名を特定し、FILE
権限を持つ必要があります。ファイルはあらゆる点で読取可能でなければならず、max_allowed_packet
バイトより小さなサイズである必要があります。secure_file_priv
システム変数が空でないディレクトリ名に設定されている場合には、そのディレクトリ内に読み込み対象ファイルが存在している必要があります。
ファイルが存在しない場合、または、上記の条件が満たされておらず、読取が不可能な場合、この関数は
NULL を返します。
MySQL 5.1.6
では、character_set_filesystem
システム変数が、リテラル文字列として与えられたファイル名の解釈をコントロールします。
mysql>UPDATE tSET blob_col=LOAD_FILE('/tmp/picture')WHERE id=1;
LOCATE(,
substr,str)LOCATE(
substr,str,pos)
最初の構文は、文字列 str
内のサブ文字列 substr
の最初の発生の位置を返します。2
番目の構文は、位置 pos
で始まる文字列 str
内のサブ文字列 substr
の最初の発生の位置を返します。str
内に substr がない場合は
0 を返します。
mysql>SELECT LOCATE('bar', 'foobarbar');-> 4 mysql>SELECT LOCATE('xbar', 'foobar');-> 0 mysql>SELECT LOCATE('bar', 'foobarbar', 5);-> 7
この関数はマルチバイトでも安全で、少なくともひとつの引数がバイナリ列である場合は、大文字小文字の区別が必須です。
現在のキャラクタセットのマッピングに基づいてすべての文字が小文字に変更された文字列
str
を返します。デフォルトは
latin1 (cp1252 West
European) です。
mysql> SELECT LOWER('QUADRATICALLY'); -> 'quadratically'
LOWER()
(および
UPPER())
をバイナリ列
(BINARY、VARBINARY、BLOB)
に適用しても、何の効果もありません。大文字/小文字の変換を実行するには、バイナリ列を非バイナリ列に変換します。
mysql>SET @str = BINARY 'New York';mysql>SELECT LOWER(@str), LOWER(CONVERT(@str USING latin1));+-------------+-----------------------------------+ | LOWER(@str) | LOWER(CONVERT(@str USING latin1)) | +-------------+-----------------------------------+ | New York | new york | +-------------+-----------------------------------+
この関数はマルチバイトでも安全です。
len 文字の長さへ、文字列
padstr
で左にパッドされた文字列
str
を返します。str が
len
より長い場合は、戻り値は
len 文字に縮められます。
mysql>SELECT LPAD('hi',4,'??');-> '??hi' mysql>SELECT LPAD('hi',1,'??');-> 'h'
頭のスペース文字を除いた文字列
str を返します。
mysql> SELECT LTRIM(' barbar'); -> 'barbar'
この関数はマルチバイトでも安全です。
設定 bits
内に対応するビットを持つ文字列から構成されるセット値
(「,」
キャラクタで区切られた部分文字列を含む文字列)
を返します。str1 はビット
0 に対応し、str2 はビット
1
に対応し、といった具合になります。str1
、str2
、... 内の
NULL
値は結果に追加されません。
mysql>SELECT MAKE_SET(1,'a','b','c');-> 'a' mysql>SELECT MAKE_SET(1 | 4,'hello','nice','world');-> 'hello,world' mysql>SELECT MAKE_SET(1 | 4,'hello','nice',NULL,'world');-> 'hello' mysql>SELECT MAKE_SET(0,'a','b','c');-> ''
MID(
は、str,pos,len)SUBSTRING(
の同義語です。
str,pos,len)
OCTET_LENGTH()
は LENGTH()
の同義語です。
文字列 str
の左端の文字がマルチバイト文字の場合は、次の公式を使ってその構成バイトの数値から計算された、その文字のコードを返します
:
(1st byte code) + (2nd byte code × 256) + (3rd byte code × 2562) ...
左端の文字がマルチバイト文字でない場合は、ORD()
は ASCII()
関数と同じ値を返します。
mysql> SELECT ORD('2'); -> 50
POSITION( は
substr
IN str)LOCATE(
の同義語です。
substr,str)
SQL
ステートメントで、適切にエスケープされたデータ値として使用できる結果を生成する文字列を引用します。文字列は単一引用符で囲まれ、単一引用符
(「'」)、バックスラッシュ
(「\」)、ASCII
NUL、そしてバックスラッシュによって先行された
Control-Z
の各インスタンスと共に戻されます。引数が
NULL
の場合は、戻り値は単一引用符の囲みなしの語句
「NULL」 になります。
mysql>SELECT QUOTE('Don\'t!');-> 'Don\'t!' mysql>SELECT QUOTE(NULL);-> NULL
count
回繰り返された文字列 str
で構成される文字列を返します。count
が 1
より小さい場合は、空の文字列を返します。str
または count が
NULL である場合は
NULL を返します。
mysql> SELECT REPEAT('MySQL', 3); -> 'MySQLMySQLMySQL'
文字列 to_str
によって置換された文字列
from_str
のすべての発生と共に、文字列
str
を返します。REPLACE()
は、from_str
を検索する際、大文字小文字を区別した検出を行います。
mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww'); -> 'WwWwWw.mysql.com'
この関数はマルチバイトでも安全です。
文字の順序が逆になった文字列
str を返します。
mysql> SELECT REVERSE('abc'); -> 'cba'
この関数はマルチバイトでも安全です。
文字列 str からの右側の
len 文字を返し、引数が
NULL である場合は
NULL を返します。
mysql> SELECT RIGHT('foobarbar', 4); -> 'rbar'
この関数はマルチバイトでも安全です。
len 文字の長さへ、文字列
padstr
で右にパッドされた文字列
str
を返します。str が
len
より長い場合は、戻り値は
len 文字に縮められます。
mysql>SELECT RPAD('hi',5,'?');-> 'hi???' mysql>SELECT RPAD('hi',1,'?');-> 'h'
この関数はマルチバイトでも安全です。
最後のスペース文字を除いた文字列
str を返します。
mysql> SELECT RTRIM('barbar '); -> 'barbar'
この関数はマルチバイトでも安全です。
str から soundex
文字列を返します。サウンドがほぼ同じなふたつの文字列は、同等の
soundex 文字列を持っています。標準の soundex
文字列は長さ 4
文字ですが、SOUNDEX()
関数は任意の長さの文字列を返します。標準の
soundex 文字列を得るには、結果に
SUBSTRING()
を使用することができます。str
内のアルファベット以外のキャラクタはすべて無視されます。A
から Z
以外のすべての国際アルファベット文字は、母音として扱われます。
SOUNDEX()
の使用時には次の制限に注意すべきです。
現在実装されているこの関数は、英語言語のみとの作動が意図されています。多言語での文字列は、正確な結果を生成できない場合があります。
この関数は、utf-8
を含むマルチバイトキャラクタセットを使用する文字列では、一貫性のある結果を提供する保証はありません。
今後のリリースでは、これらの制限をなくせるよう努力しています。詳細は Bug#22638 をご覧ください。
mysql>SELECT SOUNDEX('Hello');-> 'H400' mysql>SELECT SOUNDEX('Quadratically');-> 'Q36324'
:この関数は、もっと一般的な拡張版ではなく、元来の Soundex アルゴリズムを実装しています。その相違点としては、元来のバージョンは最初に母音を破棄してから、複製を捨てますが、拡張版ではまず複製を破棄し、それから母音を捨てます。
これは、SOUNDEX(
と同様です。
expr1)
= SOUNDEX(expr2)
N
スペース文字で構成される文字列を返します。
mysql> SELECT SPACE(6); -> ' '
SUBSTR(、str,pos)SUBSTR(、str
FROM
pos)SUBSTR(、str,pos,len)SUBSTR(
str
FROM pos FOR
len)
SUBSTR() は
SUBSTRING()
の同義語です。
SUBSTRING(、str,pos)SUBSTRING(、str
FROM
pos)SUBSTRING(、str,pos,len)SUBSTRING(
str
FROM pos FOR
len)
len
引数なしのフォームは、位置
pos ではじまる、文字列
str
からのサブ文字列を返します。len
引数を持つフォームは、位置
pos ではじまる、文字列
str からのサブ文字列
len
文字長を返します。FROM
を使用するフォームは標準の SQL
構文です。また、pos
にマイナス値を使用することも可能です。その場合、サブクエリーの頭は、文字列の最初でなく、文字列の最後からの
pos
文字です。マイナス値は、この関数のあらゆるフォームで、pos
に使用することもできます。
SUBSTRING()
のどの形式の場合も、文字列内の、部分文字列の抽出を開始するキャラクタの位置が
1 とみなされます。
mysql>SELECT SUBSTRING('Quadratically',5);-> 'ratically' mysql>SELECT SUBSTRING('foobarbar' FROM 4);-> 'barbar' mysql>SELECT SUBSTRING('Quadratically',5,6);-> 'ratica' mysql>SELECT SUBSTRING('Sakila', -3);-> 'ila' mysql>SELECT SUBSTRING('Sakila', -5, 3);-> 'aki' mysql>SELECT SUBSTRING('Sakila' FROM -4 FOR 2);-> 'ki'
この関数はマルチバイトでも安全です。
len が 1
以下の場合、結果は空の文字列になります。
SUBSTRING_INDEX(
str,delim,count)
デリミッタ delim の
count 発生前に、文字列
str
を返します。count
がプラスの場合、最後のデリミッタ
(左から数えて)
の左側のすべてを返します。count
がマイナスの場合、最後のデリミッタ
(右から数えて)
の右側のすべてを返します。SUBSTRING_INDEX()
は、delim
を検索する際、大文字小文字を区別した検出を行います。
mysql>SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);-> 'www.mysql' mysql>SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);-> 'mysql.com'
この関数はマルチバイトでも安全です。
TRIM([{BOTH | LEADING |
TRAILING} [、remstr] FROM]
str)TRIM([
remstr
FROM] str)
すべての remstr
接頭辞またはサフィックスを除いた文字列
str
を返します。BOTH、LEADING、TRAILING
のいずれの指定子も指定しなかった場合には、BOTH
を指定したものとみなされます。remstr
は省略可能であり、指定しなかった場合は空白が削除されます。
mysql>SELECT TRIM(' bar ');-> 'bar' mysql>SELECT TRIM(LEADING 'x' FROM 'xxxbarxxx');-> 'barxxx' mysql>SELECT TRIM(BOTH 'x' FROM 'xxxbarxxx');-> 'bar' mysql>SELECT TRIM(TRAILING 'xyz' FROM 'barxxyz');-> 'barx'
この関数はマルチバイトでも安全です。
UCASE() は
UPPER()
の同義語です。
HEX(
の逆演算を行います。引数内の 16
進数のそれぞれのペアを数字として解釈し、それを数字で表される文字に変換します。結果としての文字はバイナリ列として戻されます。
str)
mysql>SELECT UNHEX('4D7953514C');-> 'MySQL' mysql>SELECT 0x4D7953514C;-> 'MySQL' mysql>SELECT UNHEX(HEX('string'));-> 'string' mysql>SELECT HEX(UNHEX('1267'));-> '1267'
引数文字列内のキャラクタは正当な 16
進数である必要があります:
'0' ..
'9'、'A'
..
'F'、'a'
..
'f'。UNHEX()
は、引数内で非 16 進数を 1
つでも見つけると、NULL
を返します。
mysql> SELECT UNHEX('GG'); +-------------+ | UNHEX('GG') | +-------------+
| NULL | +-------------+
UNHEX()
の引数が
BINARY
カラムの場合、結果が
NULL
になる可能性があります。なぜなら、格納時に値に
0x00
バイトがパディングされますが、取得時にそれらのバイトが除去されないからです。たとえば、'aa'
は CHAR(3) カラムに
'aa '
として格納され、'aa'
として取得される
(末尾のパッドスペースが除去される)
ため、UNHEX()
はこのカラム値に対して
'A'
を返します。それに対し、'aa'
は BINARY(3) カラムに
'aa\0'
として保存され、'aa\0'
(トレーリングパッド
0x00
バイトがストリップされていない常態で)
として検索されます。'\0'
は正当な 16 進数ではないので、カラム値の
UNHEX() は
NULL を返します。
現在のキャラクタセットのマッピングに基づいてすべての文字が大文字に変更された文字列
str
を返します。デフォルトは
latin1 (cp1252 West
European) です。
mysql> SELECT UPPER('Hej'); -> 'HEJ'
UPPER()
をバイナリ列
(BINARY、VARBINARY、BLOB)
に適用しても、何の効果もありません。バイナリ列の大文字/小文字変換を実行する方法については、LOWER()
の説明を参照してください。
この関数はマルチバイトでも安全です。
