|
文字列関数は、CHAR または LONGVARCHAR データ型のようなテキスト情報から成る列の処理および操作に使用されます。
文字列関数ではマルチバイトの文字列がサポートされます。(ただし、CASE(文字列)はマルチバイト文字列をサポートしないことに注意してください。CASE(文字列)キーワードは、文字列データがシングルバイトの ASCII であることを前提としています。CASE(文字列)を参照してください)。
string と示される引数には、列の名前、文字列リテラル、または別のスカラー関数の結果を指定できます。
関数
|
説明
|
---|---|
ASCII (string)
|
string の一番左の文字の ASCII コードを整数で返します。
|
BIT_LENGTH (string)
|
string の長さをビット数で返します。
|
CHAR (code)
|
code で指定された ASCII コードを持つ ASCII 文字を返します。引数は整数値でなければなりません。
|
CHAR_LENGTH (string)
|
列に対して定義された string 内の文字数を返します。空白は意味を持ちます。
|
CHARACTER_LENGTH (string)
|
CHAR_LENGTH と同じです。
|
CONCAT (string1, string2)
|
string2 を string1 に連結した結果の文字列を返します。
|
ISNUMERIC (string)
|
文字列値が数値として評価できる場合は 1(TRUE)を返し、そうでない場合は 0(FALSE)を返します。
|
LCASE または LOWER (string)
|
string の大文字がすべて小文字に変換された文字列を返します。
|
LEFT (string, count)
|
string の左端から count 分の文字を返します。count の値は整数です。
|
LENGTH (string)
|
string 内の文字数を返します。VARCHAR または LONGVARCHAR の string の場合、後続の空白はカウントされます。CHAR または LONGVARCHAR の string の場合、後続のヌルはカウントされます。string の終端文字はカウントされません。
|
LOCATE (string1, string2[, start])
|
string2 の中で string1 が最初に現れる位置を返します。string2 内での検索は、開始位置(start)が指定されていなければ、先頭の文字位置から始めます。検索は指定された開始位置から始まります。string2 の先頭文字位置は 1 です。string1 が見つからない場合は値 0 が返されます。
|
LTRIM (string)
|
string から先頭の空白を除いた文字を返します。
|
OCTET_LENGTH (string)
|
string の長さを 8 進数(バイト数)で返します。
|
POSITION (string1, string2)
|
string2 の中にある string1 の位置を返します。string1 が string2 内に存在しない場合は、ゼロが返されます。
|
REPLACE (string1, string2, string3)
|
string1 を検索して string2 が現れる箇所を探し、それをすべて string3 に置き換えます。その結果が返されます。文字列が現れなかった場合は、string1 が返されます。
|
REPLICATE (string, count)
|
string を count の回数だけ繰り返して構成した string を返します。count の値は整数です。
|
REVERSE (string)
|
文字の並びが反転された string を返します。文字列型の先頭のスペースは末尾のスペースとは異なり、意味のあるものと見なされることに注意してください。例を参照してください。
|
RIGHT (string, count)
|
string の右端から count 分の文字を返します。count の値は整数です。
|
RTRIM (string)
|
string から後続の空白を除いた文字列を返します。
|
SOUNDEX (string)
|
アルファ文字列を 4 文字のコードに変換して類似した音声の語や名前を検索します。2 つの文字列の類似性を評価する 4 文字(SOUNDEX)のコードを返します。通常は名前です。
メモ:合衆国政府が使用する Soundex の公式な実装に設定される現在の規則に従います。
|
SPACE (count)
|
count で示された数の空白から成る string を返します。
|
STUFF (string1, start, length, string2)
|
string1 の start 位置から length で示された数だけの文字を string2 で置き換えた結果得られる文字列を返します。start と length は整数です。
|
SUBSTRING (string1, start, length)
|
string1 の中の start で指定された文字位置から、length で指定された文字数を取り出し、その文字列を返します。
|
UCASE または UPPER (string)
|
string の小文字すべて大文字に変換された文字列を返します。
|
スカラー関数の RTRIM または LEFT を使用する WHERE 句を含むクエリは、最適化することができます。たとえば、次のようなクエリがあるとします。
この場合、T1.C1 と T2.C2 がインデックス列ならば、述部の両側が最適化されます。述部は、WHERE キーワードの後に続く完全な検索条件です。結合に含まれるテーブルのサイズに従って、オプティマイザーは最初に処理する適切なテーブルを選択します。
一方の述部で、LTRIM および RIGHT が複雑な式中に含まれている場合、これらを最適化することはできません。
次の例では、整数の列と文字の列を持つ新しいテーブルを作成します。文字の列だけに値を持つ行を 4 行挿入し、その後で、それらの行の整数列を各行に含まれる文字の ASCII 文字コードで更新します。
CREATE TABLE numchars(num INTEGER, chr CHAR(1) CASE) INSERT INTO numchars (chr) VALUES('a') INSERT INTO numchars (chr) VALUES('b') INSERT INTO numchars (chr) VALUES('A') INSERT INTO numchars (chr) VALUES('B') UPDATE numchars SET num=ASCII(chr) SELECT * FROM numchars
SELECT の結果:
SELECT の結果:
次の例では、Person テーブルの名前と姓を連結しており、"RooseveltBora" という結果が出ます。
次の例では、名前を小文字に変換してから大文字に変換しているため、"roosevelt"、"ROOSEVELT" という結果が出ます。
次の例では、左端から 3 文字に切り詰められた名前、長さ 9、LOCATE の結果 0、という結果が出ます。このクエリの結果は "Roo"、9、0 です。
SELECT LEFT(First_name, 3),LENGTH(First_name), LOCATE(First_name, 'a') FROM Person WHERE First_name = 'Roosevelt'
次は、文字列で LTRIM および RTRIM 関数を使用した例で、結果は "Roosevelt"、"Roosevelt"、"elt" になります。
SELECT LTRIM(First_name), RTRIM(First_name), RIGHT(First_name, 3) FROM Person WHERE First_name = 'Roosevelt'
次の SUBSTRING は、名前の 2 番目の文字から最高 3 文字までをリストしており、"oos" という結果が出ます。
"Smith" と "Smythe" の文字列に SOUNDEX を使用した例を次に示します。
結果セット:
次の例は、Person テーブルで SOUNDEX を使用して "Kennedy" のように聞こえるすべての姓を検索する方法を示します。
SELECT の結果:
以下は REVERSE 関数の使用例です。
結果セット:
先頭のスペースには意味があるため、次のクエリは 0 行を返します。
これは、dept_name が 20 文字幅の CHAR フィールドとして定義されているからです。次に示すどちらのクエリ ステートメントでも期待される結果を返します。
SELECT * from COURSE WHERE REVERSE(dept_name) = ' cisuM' SELECT * from COURSE WHERE LTRIM(REVERSE(dept_name)) = 'cisuM'
結果セット:
MUS 101 Hymnology 3 Music MUS 102 Church 3 Music MUS 203 Piano 3 Music MUS 304 Music Theory 3 Music MUS 405 Recital 3 Music 5 行が影響を受けました。
|