文字列関数は、文字列を操作するための関数です。文字数を数えたり、文字の一部の切り出しや置換といったことが可能です。文字を扱うという特性上、日付関数と同じく特殊な動きをする関数が含まれます。利用法をしっかり把握しておく必要がありますが、利便性が高いため、積極的に活用していきましょう。
文字列関数には主に次のような関数が含まれます。
それでは、文字列関数の具体的な使い方を見ていきます。
LEN関数は文字列の文字数をカウントするための関数です。文字列の末尾に空白が存在する場合はカウントされません。
次の例では、商品名の文字数をカウントしています。
SELECT LEN(Name) 文字数,Name FROM Production.Product 文字数 Name ---------------------- 18 Adjustable Raceaaa 22 All-Purpose Bike Stand 12 AWC Logo Cap
LEFT/RIGHT関数は、それぞれ文字列の左端、右端から指定の文字数分切り出した文字列を返します。
次の例では、「abcde」という文字列の左端、右端から2文字切り出しています。
SELECT LEFT('abcde',2) 左,RIGHT('abcde',2) 右 左 右 ----------- ab de
SUBSTRING関数は、文字列から指定の範囲を抜き出すことができます。文字列端からの切り出ししか行えないLEFT/RIGHT関数に対して、よりフレキシブルな切り出しを行えます。
次の例では、指定文字列の左端から6文字目より、2文字分の文字列を切り出しています。
SELECT SUBSTRING('1234/56/78',6,2) 月部 月部 -------- 56
関数を組み合わせることによって、次のような動作を実現することも可能です。次の例では文字列から指定範囲を抜き出し、さらにRIGHT関数を利用して文字の先頭をゼロで埋めています。
SELECT RIGHT('00000' + SUBSTRING('12345',4,2),5) ゼロ埋め ゼロ埋め ------------ 00045
LOWER/UPPER関数は、ローマ字文字列を小文字化・大文字化するための関数です。
次の例では、与えられた文字列を小文字化・大文字化しています。
SELECT LOWER('AbcdE') 小文字化,UPPER('aBCDe') 大文字化 小文字化 大文字化 ------------------ abcde ABCDE
REPLACE関数は、指定した文字列を別の文字列で置換するための関数です。
次の例では、「ab」という文字列を「xx」に置換しています。
SELECT REPLACE('abcdeab','ab','xx') 文字列置換 文字列置換 ------------ xxcdexx
文字列関数は組み合わせて使用することにより、非常に多様な処理を行えます。文字列の先頭を大文字化、切り出した文字列を利用した文字列置換など、さまざまな形で利用できます。文字列の処理で困ったときには、文字列関数で処理できないか考えてみましょう。
SQLで利用可能な関数は非常に種類が多く、一度にすべてを把握することは困難です。しかしながら、利用するとしないでは、大きな差があるため、目的の処理が関数化されていないか調べることが大切です。また、組み合わせによってさらに処理の幅が広がるため、使い方次第では面倒な処理を一気に解決することも可能です。
関数はデータの効率的な利用を助けるため、積極的に活用しその利用法をマスターしておきましょう。
次回は、データの並べ替えやグループ化を取り上げます。お楽しみに!(次回へ続く)
石橋潤一
株式会社システムインテグレータ勤務。Web+DBの業務アプリをメインに開発に携わる。@IT連載記事「SQL Server 2005を使いこなそう」「SQL Server 2005 CTPレビュー」執筆のほか、著書に『DBマガジン別冊 SQL Server 2005徹底活用ガイド』(翔泳社刊/共著)、『ASP.NET+SQL Server ゼロからはじめるWebアプリケーション』(ソフトバンクパブリッシング刊/共著)。
Copyright © ITmedia, Inc. All Rights Reserved.