1 2 3 4 5 6 関数 4.2 文字列関数 文字列関数は文字や文字列を操作する関数です。 ・・文字からコードに変換 AS C 工工・ ・・コードから文字に変換 CHAR / CHR ・・ ・・文字列長を得る CHARCTER_LENGTH ・・ ・・文字列中の文字列検索 CHAR 工 NDEX ・・文字列結合 CONCAT ・・単語の先頭文字を大文字に変換 工 N 工 TCAP ・・文字列中に文字列を挿入 INSERT ・・文字列中の文字列検索 INSTR ・・ ・・文字列の左部分を抽出 LEFT ・・文字列長を得る LEN / LENGTH ・・文字列中の文字列検索 LOCATE ・・・小文字に変換 LOWER ・・ ・・文字の充填 LPAD ・・左から空白の削除 LTR 工 M ・・ ・・ユニコードから文字に変換 NCHAR / NCHR ・・文字列長をバイト数で得る OCTET_LENGTH ・・文字列中の文字列検索 POS 工 T 工 ON ・ ・・文字列中の文字列検索 POSSTR ・・文字列リテラルの生成 QUOTENAME ・ QUOTE / QUOTE_L 工 TERAL ・・正規表現にマッチする回数 REGEXP COUNT ・・繰り返し REPEAT / REPL 工 CATE ・ ・・文字列の置換 REPLACE ・・文字列の反転 REVERSE ・・文字列の右部分を抽出 R 工 GHT ・・ ・・右側から文字列の充填 RPAD ・・右から空白の削除 RTR 工 M ・ ・・スペース文字列の作成 SPACE ・ ・・数値から文字列に変換 STR ・ ・・文字列の部分的な入れ替え STUFF ・ ・・文字列の部分抽出 SUBSTR ・・文字列の部分抽出 SUBSTRING ・・文字列の変換 TRANSLATE ・・文字列から指定文字の削除 TR 工 M ・・文字からユニコードに変換 UN 工 CODE ・・大文字に変換 UPPER ・・ 4.2 文 字 関 数 295 .
SQL rve 1 2 3 4 5 6 関数 REPLACE 関数 DB2 racl 0Stg 碑 YSQ SQ 文字列の置換 REPLACE ( s, な ) →文字列 ・変換対象の文字列式 置換前の検索文字列式 置換後の文字列式 戻り値 一文字列 「 REPLACE 」関数は、文字列 s 中の文字列 t を、すべて文字列 u に「置換」し た文字列を返します。 字 列 a の文字列中の列 b の文字列をすべて文字列 c に変換します。 関 SELECT a,b,c,REPLACE(a,b,c) FROM f 〇 0 数 b REPLACE(a,b,c) C 漢字の文字字じ 漢じの文じ Oracle 、 PostgreSQL では、「 REGEXP_REPLACE 」関数を使用することがで きます。引数 s の扱いは、同じです。引数 t に正規表現を含んだ文字列を指定する ことができます。引数 u には、置換後の文字列を与えます。この際、¥ 1 とするこ とで、最初のグループにマッチした文字列を指定することができます。 1 ] 桁の数字を電話番号のように整形します SELECT REGEXP_REPLACE い 09012345678 ー F ROM DUAL 4.2 Oracle 参照 TRANSLATE 関数・・ ・・ P330 320
CHARINDEX 関数 SQL 1 2 3 4 5 6 関数 Å記いを 文字列中の文字列検索 CHARINDEX ( s, t[ , れ D →数値 検索する文字列式 検索の対象となる文字列式 数値式 ( 検索開始位置 ) 戻を 文字列 s を検索した結果 「 CHARINDEX 」は、文字列 s を文字列 t の中から「検索」します。 n を指定し たときには、文字列 t の n 番目の文字から検索します。省略した場合には文字列 t 文 の先頭から検索します。 検索した結果、一致する文字列がみつからない場合、 0 が返ります。みつかっ 列 数 た場合は文字列 t 内の位置を返します。 列 a の文字列を列 b の文字列中から検索します。 SELECT a, b, CHAR 工 NDEX (), b) FROM f 〇 0 CHARlNDEX(a,b) bc abcd efg h i abc XXXYYYZZZ aaaa 参照 INSTR 関数・・・・・・ P304 POS げ℃ N 関数・・・・・・ P315 LOCATE 関数・ ・・ P309 POSSTR 関数・・ ・・ P316 300 .
Ac 朝 = 標準 DB2é CONCAT 関数 racl 文字列結合 CONCAT ( s,t ) →文字列 t[ ... D →文字列 CONCAT ( s, Oracle DB2 MySQL ・文字列 ・文字列 ・文字列 戻」り値 結合された文字列 「 CONCAT 」は、引数で与えられた文字列を「結合」して返します。 ・ Oracle 、 DB2 文字列 s と文字列 t を結合して返します。この関数は文字列結合の演算子「凵」 数 と同じ機能を果たします。 により、列 a と列 b を文字列結合します。 SELECT a,b,CONCAT(a,b) FROM f00 CONCAT(a,b) ABCXYZ ABC XYZ ・ MySQL t 、 u を結合して返します。引数は可変長ですので、 文字列 s 、 CONCAT('a','b','c','d') のように必要な数を指定することができます。 により、列 a 、 b 、 c を文字列結合します。 SELECT a,b,c,CONCAT(a,b,c) FROM f00 CONCAT(a,b,c) ABCxxxXYZ XYZ ABC XXX 4.2 MySQL 凵演算子・・・・・・ P277 参照 301 .
1 2 3 5 6 数 4 文 列 数 316 文字列中の文字の位置 POSSTR ( s, の→数値 POSSTR 関数 検索する文字列リテラル 検索対象の文字列 文字列 s 中で最初にが現れる位置 D 日 2 DB2 では、「 POSSTR 」関数により、文字列中の文字列を検索し、その位置を 調べることができます。文字列 s の最初から文字列 t を検索していき、最初にみつ かった位置を返します。 検索した結果、一致する文字列がみつからない場合、 0 が返ります。みつかっ た場合は、文字列 s 内での位置を返します。引数の型により出現した位置の単位 が異なるので、注意して下さい。 引数がⅣ AR]CHA R 型である場合、出現位置をバイト単位で返します。 [VAR]GRAPHIC 型である場合は、文字単位で返します。 DB2 では、引数 t に列を指定することはできません。文字列リテラルを指定し ます。 列 a の文字列中から、文字列 ' bc ' を検索します。 SELECT a ′ abcdefg h i XXXYYYZZZ POSSTR (a,' bc 勹 FROM f00 0 2 POSSTR(a,'bc') 参照 CHARINDEX 関数・・・・・・ P300 LOCATE 関数・・・・・・ P309 INSTR 関数・・・・・・ P304 POS Ⅲ ON 関数・・・・・・ P315
SQL MS ANSI 標準 1 2 3 4 5 6 コマンド命令 CREATE TABLE DB2 racl ostgre YSQ テーブルの作成 CREATE TABLE 阨わ厄のれ e ( CO ? れれ d イわ 0 れ [ , co ー de. れれ加れ ... 】 ) ・作成するテーブル名 厄尻 e ー ? 襯 e ・ ・・列定義 CO れれれ - d れれを 0 れ・ テープルはその名前、列の名前や型および属性を、「 CREATE TABLE 」命令で 定義することで作成されます。テープルには複数の列を作成することができます ので、列指定には必要な分だけ記述します。列指定の基本は列名と型の 2 つです。 型については、「 1.3 テープル構造」を参照して下さい。 列 a , b を持ち、それぞれの型が整数、文字列であるテーブル foo を作成 します。 CREATE TABLE f00 ( a INTEGER ′ b VARCHAR ()Ø ) 2.3 データ定義命令 aa-J テープルの列には、さまざまな制約を設定することができます。制約に違反す るデータは受け入れられなくなります。例えば、 NULL 値をデータとして格納し たくないならば、 NOTNULL 制約を列に設定します。 列に対して作成された制約を「列制約」と呼びます。テープルに対して作成さ れた制約を「テーブル制約」と呼びます。テープル制約を使うことで、テープル 内の複数の列に対して制約を設定することができるようになります。 ・列のデフォルト値 列には、属性としてデフォルト値を設定することができます。デフォルト値は、 「 DEFAULT 」キーワードを使って設定します。 INSERT 時に指定されなかった列 は、デフォルト値が設定されていれば、その値で INSERT されます。 1 1 0 .
SQL 1 2 3 4 5 6 関数 STUFF 関数 文字列の部分的な入れ替え STUFF ( s,f, ) →文字列 戻り値 入れ替え後の文字列 「 STUFF 」関数は、文字列 s の f 番目か引文字分の文字列を削除し、その部分 を文字列 t に「入れ替え」ます。 列 a の 3 文字目から 2 文字分をⅨ ><X ' に入れ替えます。 SELECT a,STUFF (a ′ 3 , 2 洋 XXX ・ ) FROM fOO STUFF(a,3,2,'XXX') 漢字の文字漢字 xxx 字 ABXXXEFG ABCDEFG ・文字列 ・文字列を入れ替える先頭の文字位置 ・削除する文字列の長さ ・入れ替える文字列 4.2 文 関 数 参照 REPLACE 関数・ ・・ P320 327 .
INSTR 関数 racl MS 文字列中の文字列検索 INSTR ( s, t[, れし襯】 D →数値 INSTR ( s, の→数値 4 5 6 関数 OracIe MySQL MSAccess 検索の対象となる文字列式 検索する文字列式 検索を開始する位置 ・何番目かの指定 戻り 文字列を検索した結果 文 FINSTR 」関数は、文字列 t を文字列 s の中から「検索」します。 n を指定した 字 ときには、文字列 s の n 番目の文字から検索します。負の数を指定した場合は、 数 文字列の最後から数えて n 番目の文字列から逆向きに検索します。第 4 番目の引 数 m を指定したときには、 m 回目にみつかった位置を返します。 n 、 m を省略し た場合、どちらも 1 がデフォルトとして与えられます。 検索した結果、一致する文字列がみつからない場合、 0 が返ります。みつかっ た場合は、文字列 s 内での位置を返します。 文字列検索関数には「 INSTRB 」という関数もあります (Orac1e)0 引数は同じ ですが、引数 n 、 m は文字単位ではなく、バイト単位になります。よって、漢字 を含む文字列からは正しく検索されない可能性があります。 また、 Oracle では、文字単位別に「 INSTRC 、 INSTR2 、 INSTR4 」といったバ リエーションがあります。 列 a の文字列中から、列 b を検索します。 SELECT a,b, 工 NSTR(a,b) FROM f 〇 0 b INSTR(a,b) abcd efg h i bc 2 abc 0 XXXYYYZZZ 304
1 2 3 4 5 6 コマンド命令 Oracle 、 DB2 での計算列は、「列型 GENERATED ALWAYS AS ( 計算式 ) 」 として定義します。 列 c を計算列として定義します。列 c の内容は、 a 、 b の結果になります。 CREATE TABLE f00 ( a 工 NTEGER, b 工 NTEGER, c 工 NTEGER GENERATED ALWAYS AS ( a * b ) DB2 * 0 「 acle では、型及び、 GENERATEDALWAYS は省略することができます。 0 「 acle における計算列は、 11g からの機能です。 ・自動インクリメント列の定義 列を定義する際に、行が追加される度に、自動的にインクリメントしていく列 を定義することができます。このような列を定義することで、プライマリキーを ァ 自動的に生成することができます。列定義の方法はデータベースごとに異なりま タ すので、個別に説明していきます。 定 義 Oracle OracIe では、自動インクリメントする列を定義することができません。しかし、 D シーケンスから値を取って INSERT することで、実現することができます。 SQL Server 、 Access SQL Server では、「 IDENTITY 」を使用します。 IDENTITY は型の後に指定し ます。括弧の中に、初期値とインクリメント値を与えます。 列 a を自動インクリメント列として定義します。 CREATE TABLE f00 ( a 工 NTEGER 工 DENT 工 TY(1′1) ′ b VARCHAR ( 2 の ロ卩 SQLServer MS Access 1 1 6 .
Oracle TO_CHAR (expression [ . format [ , 'nlsparams 冂 ] ) 「 expression 」には変換する式を指定します。この式の内容が文字列に変換 されて戻されます。必要であれば「 format 」には書式を指示する文字列を与え ます。次の「 nlsparams 」には、もし必要であれば書式内で使用することができ、 国ごとに異なる、月の名前や通貨記号、数値の区切り記号などを文字列で与え ます。 TO_NUMBER 、 TO_DATE も同じ呼び出し形式で使用することができ ます。 LIKE を使用して数値を検索するために文字列に変換するには以下のよう に行います。 SELECT * FROM f00 WHERE CONVERT (varchar, 土 ) L 工 KE ' 1 宅、 SELECT * FROM f00 WHERE TO—CHAR ( 土 ) L 工 KE ー 1 ・ SQL -92 では、「 CAST 」関数により型変換を行えるように決められています。 CAST 関数では、単純な型変換を行うことはできますが、書式を指定すること はできません。 Appendix SQLServer Oracle —l テクニック 文字列操作を行うには ? 文字列結合とスペースの削除 SQL では列の内容を演算することが可能です。良く使用されるのは文字列を 加工することだと思います。文字列型には、長さが固定な「 char 」または 「 CHARACTER 」型と、可変長な「 varchar 」または「 VARCHAR2 」型の 2 種 類が存在します。前者は固定長の文字列がデータベース中に保存されます。長 さ 8 バイトの文字列型の列には最大、半角で 8 文字の文字列を格納することがで きます。 8 文字に満たない文字列の場合には、スペースが空いたところに埋めら れます。 ある文字列型の列を文字列結合して 1 つの列として結果を得るには「 + 演算子」 または「凵演算子」を使用して以下のように SELECT します。 SELECT s ′し′ s + 亡 FROM f00 SELECT s ′し′ s 凵む FROM f00 図表 A -21 文字列結合の例 abc abc 1 1 12 abc 12 abc 123 abc abc 123 1234 abc abc 1234 SQLServer MSAccess Oracle DB2 PostgreSQL S 十 t 593.