支援対象地域:札幌、仙台、関東、愛知、関西、広島、福岡

  • TOP
  •   
  • コラム
  •   
  • SQLでよく使う文字列操作の関数

はじめに

SQL Serverを使った作業をしていると、文字列に対し何らかの操作をしたいと思うことが多々あります。
本記事では、SQL Serverで使用される文字列型の関数について、文字列操作を行うものを中心にその概要と使い方の例について紹介します。

ASCII()

一番初めに説明する関数は、ASCII()関数です。これは、文字列を入力値として受け取り、入力された文字列の一番先頭にある文字のASCIIコードを返すスカラー関数となっています。ASCIIは「American Standard Code for Information Interchange」の略です。ASCIIコードは7ビットの文字コードであり、それぞれの文字に一意な文字コードが付与されています。
ASCIIコードをまとめたものが次のページにまとめられています。
ASCII Code – The extended ASCII table

ACII()は例えば以下のように使用します。


例:
SELECT ASCII('A'), ASCII('AB') , ASCII('B')

結果:
65,65,66

結果に示されているように、ASCII( ‘A’)とASCII( ‘AB’)は65という同じ結果を返します。これは、先に述べたように、文字列の先頭にある文字のASCIIコードを返すからです。

CHARINDEX()

CHARINDEX()関数は、指定された文字列内の文字の位置を返すための関数です。戻り値は、検索文字列の長さに依存しています。
構文は以下の通りです。


CHARINDEX(検索する文字, 検索対象となる文字列, [n番目の文字から検索開始する])

検索開始場所の指定がない場合は、文字列の先頭から検索を開始します。
CHARINDEX()は例えば以下のように使用します。

例:
SELECT CHARINDEX('World','Hello World'),CHARINDEX('World','Hello World',8)

結果:
7, 0

CHARINDEX('World','Hello World')の場合、Worldという文字列の先頭文字Wが、Hello Worldという文字列の何番目に位置しているかを検索しています。WはHello Worldの7番目に位置しているため7という結果が返されます。
CHARINDEX('World','Hello World',8)の場合、文字列の開始位置を8に指定しています。指定された開始位置よりも後ろにWorldの先頭文字であるWが存在していないため、0が返されます。

CONCAT()

CONCAT()関数は、複数の文字列を入力として受け取り、すべての入力を連結した後、その文字列を返すスカラー関数です。
CONCAT()は例えば以下のように使用します。


例:
SELECT CONCAT('Hello',' World')

結果:
Hello World

CONCAT_WS()

CONCAT_WS関数()はCONCAT()関数と非常に似ていますが、ユーザーは連結された入力文字列間のセパレータを指定できます。
CONCAT_WA()は例えば以下のように使用します。


例:
SELECT CONCAT_WS(',','Hello World','SQL Server')

結果:
Hello World, SQL Server

SOUNDEX()

SOUNDEX()関数は、文字列を入力値として受け取り、この文字列の読み方に基づいて4文字のコードを返すスカラー関数です。先頭の文字とそれに続く H、Y、W 以外の 3 つの子音がベースになっています。文字列の最初の文字である場合を除き、string-expression の母音は無視されます。同じ文字が 2 つ続く場合は 1 文字としてカウントされます。たとえば、"apples" という単語は、文字 A、P、L、S がベースになります。また、文字列の長さが4未満の場合は、戻り値にゼロが追加されます。
SOUNDEX()は例えば以下のように使用します。


例:
SELECT SOUNDEX('H'), SOUNDEX('He'), SOUNDEX('Hello'), SOUNDEX('Hello World')

結果:
H000, H000, H400, H400

上記の結果から、「H」と「He」の出力結果が同じであることが分かります。これは母音である「e」無視されるからです。「Hello」と「Hello World」の出力結果が同じなのは、関数は最初の4文字しか使用しないためです。

LEFT(), RIGHT()

LEFT()関数およびRIGHT()関数は、最も一般的なSQL文字列関数の1つです。文字列の左側または右側から特定の数の文字を抽出するために使用されます。
LEFT()および RIGHT()は例えば以下のように使用します。


例:
SELECT LEFT('Hello World',5) , RIGHT('Hello Wolrd',5)

結果:
Hello, World

LOWER(), UPPER()

LOWER()関数及び UPPER()関数は、入力文字列の大文字と小文字を変更するために使用される一般的なSQL文字列関数です。LOWER()は大文字と小文字を小文字に変更するために使用され、UPPER()は大文字と小文字を大文字に変更するために使用されます。
LOWER(),及びUPPER()は例えば以下のように使用します。


例:
SELECT LOWER('Hello World') , UPPER('Hello World')

結果:
hello world, HELLO WORLD

さいごに

いかがだったでしょうか。本記事で紹介した関数はどれもSQLを操作するうえで役に立つものばかりです。
忘れてしまった場合には本記事を思い出していただけると幸いです。