文字列関数では、結果が
        max_allowed_packet
        サーバパラメータの設定より長くなると、NULL
        が返ります。 See 項5.5.2. 「サーバパラメータのチューニング」。
      
文字列の位置を処理する関数では、最初の位置は 1 として番号付けされます。
            ASCII(str)
          
            文字列 str の左端の文字の ASCII
            コード値を返す。str
            が空の文字列のときは 0
            を返す。str が
            NULL のときは NULL
            を返す。
          
mysql>SELECT ASCII('2');-> 50 mysql>SELECT ASCII(2);-> 50 mysql>SELECT ASCII('dx');-> 100
            ORD() 関数も参照。
          
            BIN(N)
          
            longlong
            (BIGINT)型の数値である
            N
            のバイナリの文字列式を返す。これは
            CONV(N,10,2)
            と同じ。N が NULL
            のときは NULL を返す。
          
mysql> SELECT BIN(12);
        -> '1100'
            BIT_LENGTH(str)
          
            文字列 str
            の長さをビットで返す。
          
mysql> SELECT BIT_LENGTH('text');
        -> 32
            CHAR(N,...)
          
            引数を整数として解釈し、それらの整数の
            ASCII
            コード値で表現された文字から成る文字列を返す。NULL
            値はスキップされる。
          
mysql>SELECT CHAR(77,121,83,81,'76');-> 'MySQL' mysql>SELECT CHAR(77,77.3,'77.3');-> 'MMM'
            CHAR_LENGTH(str)
          
            文字列 str
            の長さ(文字数)を返す。
            マルチバイト文字は 1 文字とみなされる。
            したがって、5
            個のマルチバイト文字で構成される文字列の場合、LENGTH()
            では 10
            が返るが、CHAR_LENGTH() では
            5 が返る。
          
            CHARACTER_LENGTH(str)
          
            CHARACTER_LENGTH() は
            CHAR_LENGTH() のシノニム。
          
            CONCAT(str1,str2,...)
          
            引数を連結した結果の文字列を返す。いずれかの引数が
            NULL のときは NULL
            を返す。3 つ以上の引数の指定が可能。
            数値型の引数は同等の文字列形式に変換される。
          
mysql>SELECT CONCAT('My', 'S', 'QL');-> 'MySQL' mysql>SELECT CONCAT('My', NULL, 'QL');-> NULL mysql>SELECT CONCAT(14.3);-> '14.3'
            CONCAT_WS(separator, str1, str2,...)
          
            CONCAT_WS() は
            CONCAT()
            の特殊型で、区切り文字付きの CONCAT(CONCAT
            With
            Separator)。最初の引数は残りの引数の区切り文字である。
            この区切り文字は連結する各文字列の間に挿入される。
            区切り文字は残りの引数同様、文字列として指定することができる。区切り文字が
            NULL の場合、結果は
            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'
            MySQL 4.1.1 より前のバージョンの
            CONCAT_WS()
            では、NULL
            値だけでなく、空の文字列もスキップされる。
          
            CONV(N,from_base,to_base)
          
            数値を、進数の異なる数値に変換する。数値
            N を from_base
            進数から to_base
            進数に変換した数値の文字列表現を返す。いずれかの引数が
            NULL のときは NULL
            を返す。 引数 N
            は整数として解釈されるが、整数または文字列として指定することができる。最小の進数は
            2 で、最大の進数は
            36。to_base
            が負数の場合、N
            は符号付きの数値とみなされる。それ以外の場合、N
            は符号なしの数値として処理される。CONV
            は 64 ビットの精度で動作する。
          
mysql>SELECT CONV("a",16,2);-> '1010' mysql>SELECT CONV("6E",18,8);-> '172' mysql>SELECT CONV(-17,10,-18);-> '-H' mysql>SELECT CONV(10+"10"+'10'+0xa,10,10);-> '40'
            ELT(N,str1,str2,str3,...)
          
            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' に指定された数値に対し、1 のビットを 'on' で指定された文字列で表現し、0 のビットを 'off' で指定された文字列で表現した文字列を返す。各文字列の間は 'separator' に指定された区切り文字'(デフォルトは ',')で区切られ、'number_of_bits' に指定されたビット数(デフォルトは 64)だけが表示される。
mysql> SELECT EXPORT_SET(5,'Y','N',',',4)
        -> Y,N,Y,N
            FIELD(str,str1,str2,str3,...)
          
            str1, str2,
            str3, ...
            リスト内の str
            のインデックスを返す。 str
            が検出されない場合は 0
            を返す。 FIELD() は
            ELT() の逆。
          
mysql>SELECT FIELD('ej', 'Hej', 'ej', 'Heja', 'hej', 'foo');-> 2 mysql>SELECT FIELD('fo', 'Hej', 'ej', 'Heja', 'hej', 'foo');-> 0
            FIND_IN_SET(str,strlist)
          
            N
            個の部分文字列で構成されるリスト
            strlist に、文字列
            str
            が含まれている場合は、1 から
            N
            までのいずれかの値を返す。文字列のリストは、それぞれの間を
            ‘,’
            文字で区切られた各部分文字列で構成される文字列である。最初の引数が定数文字列で、2
            番目の引数が SET
            型のカラムの場合、FIND_IN_SET()
            関数はビット演算を使用するよう最適化される。
            str が strlist
            に含まれていない場合や、strlist
            が空の文字列の場合は、0
            を返す。どちらの引数も NULL
            の場合は、NULL を返す。
            最初の引数にカンマ
            ‘,’
            が含まれていると、この関数は正しく動作しない。
          
mysql> SELECT FIND_IN_SET('b','a,b,c,d');
        -> 2
            HEX(N_or_S)
          
            N_OR_S
            が数値の場合、longlong(BIGINT)型の数値である
            N の 16
            進値の文字列表現を返す。 これは
            CONV(N,10,16) と同じ。
          
            N_OR_S が文字列の場合は、N_OR_S の各文字を 2
            桁の 16 進数に変換した N_OR_S の 16
            進文字列を返す。これは 0xff
            文字列の逆。
          
mysql>SELECT HEX(255);-> 'FF' mysql>SELECT HEX("abc");-> 616263 mysql>SELECT 0x616263;-> "abc" mysql>SELECT HEX('あ');-> 'A4A2' ; # 注意 EUC-JP コードでの結果
            INSERT(str,pos,len,newstr)
          
            str 内の、位置
            pos から始まる長さ
            len の部分文字列を文字列
            newstr
            に置き換えた文字列を返す。
          
mysql>SELECT INSERT('Quadratic', 3, 4, 'What');-> 'QuWhattic' mysql>SELECT INSERT('あいうえお', 3, 2, 'か');-> あいかお
この関数はマルチバイト文字に対応している。
            INSTR(str,substr)
          
            文字列 str
            に最初に出現する部分文字列
            substr の位置を返す。これは
            LOCATE() の 2
            つの引数を使用する形式と同じだが、引数の順序が入れ替わっている。
          
mysql>SELECT INSTR('foobarbar', 'bar');-> 4 mysql>SELECT INSTR('xbar', 'foobar');-> 0 mysql>SELECT INSTR('あいうえお', 'う');-> 3
この関数はマルチバイト文字に対応している。 MySQL 3.23 では、この関数では大文字と小文字が区別されるが(ケース依存)、バージョン 4.0 では、どちらかの引数がバイナリ文字列の場合にのみケース依存になる。
            LCASE(str)
          
            LCASE() は LOWER()
            のシノニム。
          
            LEFT(str,len)
          
            文字列 str の左端にある長さ
            len の文字を返す。
          
mysql>SELECT LEFT('foobarbar', 5);-> 'fooba' mysql>SELECT LEFT('あいうえお', 2);-> 'あい'
            LENGTH(str)
          
            文字列 str
            の長さ(バイト)を返す。1個のマルチバイト文字は複数バイトになる。
            したがって、5 個の 2
            バイト文字で構成される文字列の場合、LENGTH()
            では 10
            が返るが、CHAR_LENGTH() では
            5 が返る。
          
mysql>SELECT LENGTH('text');-> 4 mysql>SELECT LENGTH('あいうえお');-> 10
            LOAD_FILE(file_name)
          
            ファイルを読み取り、ファイルの内容を文字列として返す。ファイルはサーバ上に存在しなければならず、ファイルのフルパス名を指定する必要がある。また、FILE
            権限が必要となる。ファイルは全ユーザが読み取り可能でなければならず、max_allowed_packet
            より小さいサイズでなければならない。
          
            ファイルが存在しない場合や、上記の理由のいずれかによって読み取り不可能な場合、この関数は
            NULL を返す。
          
mysql> UPDATE tbl_name
           SET blob_column=LOAD_FILE("/tmp/picture")
           WHERE id=1;
            MySQL バージョン 3.23
            以外のバージョンを使用している場合は、ファイルの読み取りをアプリケーション内で行い、その後
            INSERT/UPDATE
            ステートメントを作成して、アプリケーションからデータベースにファイルの内容を書き出す必要がある。MySQL++
            ライブラリを使用している場合は、これを行う方法の
            1 つを
            http://www.mysql.com/documentation/mysql++/mysql++-examples.html
            で参照できる。
          
            LOCATE(substr,str) ,
            LOCATE(substr,str,pos)
          
            最初の構文は、文字列 str
            に最初に出現する部分文字列
            substr の位置を返す。 2
            番目の構文は、文字列 str
            の位置 pos
            以降に最初に出現する部分文字列
            substr の位置を返す。
            str 内に substr
            が存在しない場合は 0
            を返す。
          
mysql>SELECT LOCATE('bar', 'foobarbar');-> 4 mysql>SELECT LOCATE('xbar', 'foobar');-> 0 mysql>SELECT LOCATE('bar', 'foobarbar',5);-> 7 mysql>SELECT LOCATE('え', 'あいうえおうえ');-> 4 mysql>SELECT LOCATE('え', 'あいうえおうえ', 5);-> 7
この関数はマルチバイト文字に対応している。 MySQL 3.23 では、この関数では大文字と小文字が区別されるが(ケース依存)、バージョン 4.0 では、どちらかの引数がバイナリ文字列の場合にのみケース依存になる。
            LOWER(str)
          
            str
            のすべての文字を現在のキャラクタセット(デフォルトは
            ISO-8859-1
            Latin1)のマッピングに基づいて小文字に変更した文字列を返す。
          
mysql>SELECT LOWER('QUADRATICALLY');-> 'quadratically' mysql>SELECT LOWER('あいうえお');-> 'あいうえお'
この関数はマルチバイト文字に対応している。
            LPAD(str,len,padstr)
          
            文字列 str が len
            に指定された長さの文字になるよう、str
            の左側に文字列 padstr
            を埋め込んだ文字列を返す。str
            が len
            より長い場合は、戻り値は len
            の長さの文字に縮められる。
          
mysql>SELECT LPAD('hi',4,'??');-> '??hi' #バージョン4.1以上では以下のようになります。 mysql>SELECT LPAD('あいう', 5 , 'X');-> 'XXあいう' #バージョン4.1未満では以下のようになります。 mysql>SELECT LPAD('あいう', 8 , 'X');-> 'XXあいう' mysql>SELECT LPAD('あいう', 8 , 'お');-> 'おあいう' mysql>SELECT LPAD('あいう', 5 , 'X');-> 'あい ' ; #注意。最後は1byte
            LTRIM(str)
          
            文字列 str
            から先頭のスペース文字を削除した文字列を返す。
          
mysql> SELECT LTRIM('  barbar');
        -> 'barbar'
            MAKE_SET(bits,str1,str2,...)
          
            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(0,'a','b','c');-> ''
            MID(str,pos,len)
          
            MID(str,pos,len) は
            SUBSTRING(str,pos,len) のシノニム。
          
            OCT(N)
          
            longlong 型の数値である N の 8
            進値の文字列表現を返す。これは
            CONV(N,10,8) と同じ。
            N が NULL
            のときは NULL を返す。
          
mysql> SELECT OCT(12);
        -> '14'
            OCTET_LENGTH(str)
          
            OCTET_LENGTH() は
            LENGTH() のシノニム。
          
            ORD(str)
          
            文字列 str
            の左端の文字がマルチバイト文字の場合に、次の式を使用して計算した、その文字を構成する各文字の
            ASCII
            コード値を返す。((最初のバイトの
            ASCII コード)*256+(2 番目のバイトの ASCII
            コード))[*256+3 番目のバイトの ASCII
            コード...]
            左端の文字がマルチバイト文字でないときは、ASCII()
            関数を使用した場合と同じ値を返す。
          
mysql>SELECT ORD('2');-> 50 mysql>SELECT ORD('あ');-> 42146 ; #注意 EUC-JP コードでの結果
            POSITION(substr IN str)
          
            POSITION(substr IN str) は
            LOCATE(substr,str) のシノニム。
          
            QUOTE(str)
          
            指定された文字列を、SQL
            ステートメントで正しいエスケープデータ値として使用できるように引用符で囲んだ文字列を返す。結果の文字列は単一引用符で囲まれ、文字列内に単一引用符(‘'’)、バックスラッシュ(‘\’)、ASCII
            NUL、Control-Z
            が含まれている場合はその直前にバックスラッシュが挿入される。引数が
            NULL の場合は、``NULL''
            という語が単一引用符で囲まれずに返される。
            QUOTE() 関数は MySQL バージョン
            4.0.3 で追加された。
          
mysql>SELECT QUOTE("Don't");-> 'Don\'t!' mysql>SELECT QUOTE(NULL);-> NULL
            REPEAT(str,count)
          
            文字列 str
            を、count
            に指定された回数だけ繰り返した文字列を返す。count
            <= 0
            の場合は、空の文字列を返す。str
            または count が
            NULL
            の場合は、NULL を返す。
          
mysql>SELECT REPEAT('MySQL', 3);-> 'MySQLMySQLMySQL' mysql>SELECT REPEAT('げ', 3);-> 'げげげ'
            REPLACE(str,from_str,to_str)
          
            文字列 str に含まれる文字列
            from_str をすべて文字列
            to_str
            に置換した文字列を返す。
          
mysql>SELECT REPLACE('www.mysql.com', 'w', 'Ww');-> 'WwWwWw.mysql.com' mysql>SELECT REPLACE('あいあいうえお', 'い', 'す');-> 'あすあすうえお'
この関数はマルチバイト文字に対応している。
            REVERSE(str)
          
            文字列 str
            内の文字の順序を逆にした文字列を返す。
          
mysql>SELECT REVERSE('abc');-> 'cba' mysql>SELECT REVERSE('あいうえお');-> 'おえういあ'
この関数はマルチバイト文字に対応している。
            RIGHT(str,len)
          
            文字列 str の右端にある長さ
            len の文字を返す。
          
mysql>SELECT RIGHT('foobarbar', 4);-> 'rbar' mysql>SELECT RIGHT('あいうえお', 4);-> 'いうえお'
この関数はマルチバイト文字に対応している。
            RPAD(str,len,padstr)
          
            文字列 str が len
            に指定された長さの文字になるよう、str
            の右側に文字列 padstr
            を埋め込んだ文字列を返す。str
            が len
            より長い場合は、戻り値は len
            の長さの文字に縮められる。
          
mysql>SELECT RPAD('hi',5,'?');-> 'hi???' #バージョン4.1以上では以下のようになります。 mysql>SELECT RPAD('あい', 5, 'う');-> 'あいううう' #バージョン4.1未満では以下のようになります。 mysql>SELECT RPAD('あい', 5, 'X');-> 'あいX' mysql>SELECT RPAD('あい', 5, 'う');-> 'あい ' ; # 注意: 最後はマルチバイト文字の上位1byte
            RTRIM(str)
          
            文字列 str
            から後続のスペース文字を削除した文字列を返す。
          
mysql> SELECT RTRIM('barbar   ');
        -> 'barbar'
この関数はマルチバイト文字に対応している。
            SOUNDEX(str)
          
            文字列 str の soundex
            文字列を返す。発音が似通った 2
            つの文字列の soundex
            文字列は同じものになる。標準の soundex
            文字列の長さは 4
            文字だが、SOUNDEX()
            関数は任意の長さの文字列を返す。返された値に対して
            SUBSTRING()
            を使用すると、標準の soundex
            文字列が得られる。指定された文字列内の英数字以外の文字は無視される。A
            〜 Z
            の範囲外の各国語のアルファベット文字はすべて母音として扱われる。
          
mysql>SELECT SOUNDEX('Hello');-> 'H400' mysql>SELECT SOUNDEX('Quadratically');-> 'Q36324'
            expr1 SOUNDS LIKE expr2
          
            SOUNDEX(expr1)=SOUNDEX(expr2)
            と同じ(バージョン 4.1
            以降でのみ利用可能)。
          
            SPACE(N)
          
            N
            に指定された数のスペース文字で構成される文字列を返す。
          
mysql> SELECT SPACE(6);
        -> '      '
            SUBSTRING(str,pos) ,
            SUBSTRING(str FROM pos) ,
            SUBSTRING(str,pos,len) ,
            SUBSTRING(str FROM pos FOR len)
          
            len
            引数のない形式の場合は、文字列
            str 内の位置 pos
            以降の部分文字列を返す。 len
            引数のある形式の場合は、文字列
            str の位置 pos
            以降の、len
            に指定された長さの部分文字列を返す。
            FROM を使用する形式は SQL-92
            の構文。
          
mysql>SELECT SUBSTRING('Quadratically',5);-> 'ratically' mysql>SELECT SUBSTRING('foobarbar' FROM 4);-> 'barbar' mysql>SELECT SUBSTRING('Quadratically',5,6);-> 'ratica' mysql>SELECT SUBSTRING('あいうえおかきくけこ', 5);-> 'おかきくけこ'
この関数はマルチバイト文字に対応している。
            SUBSTRING_INDEX(str,delim,count)
          
            文字列 str
            から、delim
            に指定された区切り記号の
            count
            個目の出現位置の直前までの部分文字列を返す。
            count
            に指定された数が正数の場合は、(左から数えて)指定された数の最後の区切り記号の左側にあるすべての文字を返す。
            count
            に指定された数が負数の場合は、(右から数えて)指定された数の最後の区切り記号の右側にあるすべての文字を返す。
          
mysql>SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);-> 'www.mysql' mysql>SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);-> 'mysql.com' mysql>SELECT SUBSTRING_INDEX('あいんうえおんかき', 'ん', 2);-> 'あいんうえお' mysql>SELECT SUBSTRING_INDEX('あいんうえおんかき', 'ん', -2);-> 'うえおんかき'
この関数はマルチバイト文字に対応している。
            TRIM([[BOTH | LEADING | TRAILING] [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' mysql>SELECT TRIM(BOTH 'お' FROM 'おあいうえお');-> 'あいうえ'
この関数はマルチバイト文字に対応している。
            UCASE(str)
          
            UCASE() は UPPER()
            のシノニム。
          
            UPPER(str)
          
            str
            のすべての文字を現在のキャラクタセット(デフォルトは
            ISO-8859-1
            Latin1)のマッピングに基づいて大文字に変更した文字列を返す。
          
mysql>SELECT UPPER('Hej');-> 'HEJ' mysql>SELECT UPPER('へい');-> 'へい'
この関数はマルチバイト文字に対応している。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

