<html><head>		<META http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" href="josh.css"></head><body bgcolor="#FFFFFF">
<div id="説明">
			<table width="100%" cellspacing="0" cellpadding="0" border="0">
				<tr><td valign="top" class="name">スカラー関数</td><td valign="top" nowrap class="compatibility">&#160; </td>
				</tr>
				<tr>
					<td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
				</tr>
				<tr>
					<td valign="top" colspan="2" class="Description"><p> スカラー関数は、表 4.2 のカテゴリに分類されます。</p>
					</td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td valign="top" colspan="2" class="Description"><span class="title">スカラー関数のカテゴリ </span></td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td valign="top" colspan="2">
						<table border="1"><thead><tr><th>関数のカテゴリ</th><th>説明</th></tr>
							</thead><tbody><tr><td>組み込み</td><td>データベースに組み込まれている値または設定に対する操作を実行します。Oracle の場合、"組み込み" という用語は、Oracle で提供されている (DBMS に組み込まれている) 特殊な関数全般のことを指します。Oracle における "組み込み" は、ここで説明している組み込み関数とはまったく別のものです。</td>
								</tr>
								<tr><td>日時</td><td>日時フィールドに対する操作を実行したり、日時フォーマットで値を返したりします。</td>
								</tr>
								<tr><td>数値</td><td>数値に対する操作を実行したり、数値を返したりします。</td>
								</tr>
								<tr><td>文字列</td><td>文字値 (char<span class="emphasis"></span>、varchar、nchar、nvarchar、および CLOB) に対する操作を実行したり、文字列または数値を返したりします。</td>
								</tr>
							</tbody></table>
					</td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr><td valign="top" class="Description" colspan="2">CASE と CAST も関数ですが、これらについては<link>第 3 章</link>で説明しています。これらの関数は複雑で、SQL データステートメントで使用されることが多いためです。</td>
				</tr>
			</table>
		</div>

<DIV id="組み込みスカラー関数">
  <table border="0" cellspacing="0" cellpadding="0" width="100%">
    <tr>
      <td valign="top" class="name">組み込みスカラー関数</span></td>

      <td valign="top" nowrap class="compatibility"> </td>
    </tr>
    <tr>
      <td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
    </tr>
				<tr>
					<td valign="top" colspan="2" class="Description"><p> SQL99 の組み込みスカラー関数では、現在のユーザーセッションや、その属性 (現在のセッション権限など) を識別できます。組み込みスカラー関数は、ほぼ常に非決定性です。表 4.3 の最初の 3 つの関数は、  日時関数に分類される組み込み関数です。先に述べた 4 つのベンダーでは、これらの SQL 組み込み関数以外にも多くの関数を提供していますが、SQL 標準で定義されているのは、表 4.3 に示した関数のみです。</p>
					</td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td valign="top" colspan="2" class="Description"><span class="title">SQL99 の組み込みスカラー関数 </span></td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td valign="top" colspan="2">
						<table border="1"><thead><tr><th>関数</th><th>目的</th></tr>
							</thead><tbody><tr><td>CURRENT_DATE</td><td>現在の日付を識別します。</td>
								</tr>
								<tr><td>CURRENT_TIME</td><td>現在の時刻を識別します。</td>
								</tr>
								<tr><td>CURRENT_TIMESTAMP</td><td>現在の日時を識別します。</td>
								</tr>
								<tr><td>CURRENT_USER</td><td>データベースサーバーで現在アクティブなユーザーを識別します。</td>
								</tr>
								<tr><td>SESSION_USER
</td><td>現在アクティブな認証 ID を識別します (ユーザーと異なる場合)。</td>
								</tr>
								<tr><td>SYSTEM_USER

</td><td>ホストオペレーティングシステムで現在アクティブなユーザーを識別します。</td>
								</tr>
							</tbody></table>
					</td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr><td valign="top" class="Description" colspan="2"> Microsoft SQL Server では、すべての組み込みスカラー関数がサポートされています。Oracle では、上記の組み込みスカラー関数はサポートされていません。ただし、CURRENT_USER のシノニムとして USER と、CURRENT_TIMESTAMP のシノニムとして SYSDATE がサポートされています。MySQL では、すべての SQL99 組み込みスカラー関数と、前述の Oracle の 2 つの関数がサポートされています。PostgreSQL では、CURRENT_USER のシノニムとして、SQL99 で定義されている USER がサポートされています。さらに MySQL では、CURRENT_TIMESTAMP のシノニムとして、NOW( ) と UNIX_TIMESTAMP( ) がサポートされています。PostgreSQL では、SESSION_USER を除くすべての SQL99 組み込みスカラー関数がサポートされています。</td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td valign="top" nowrap class="title"><span class="title">例</span></td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td valign="top" class="Description" colspan="2"><p>次のクエリーは、組み込み関数から値を取得します。日付は、各データベースのネイティブフォーマットで返されます。</p>
					</td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td valign="top" class="Description" colspan="2"><pre>/* On MySQL */
SELECT CURRENT_TIMESTAMP;
-&gt; '2001-12-15 23:50:26'

/* On Microsoft SQL Server */
SELECT CURRENT_TIMESTAMP
GO
-&gt; 'Dec 15,2001 23:50:26'

/* On Oracle */
SELECT USER FROM dual;
-&gt; dylan</pre>
					</td>
    </tr>
  </table>
</DIV>
<DIV id="数値スカラー関数">
  <table border="0" cellspacing="0" cellpadding="0" width="100%">
    <tr>
      <td valign="top" class="name">数値スカラー関数</span></td>

				      <td valign="top" nowrap class="compatibility"> </td>
				    </tr>
				    <tr>
				      <td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
    </tr>
				<tr>
					<td valign="top" colspan="2" class="Description"><p>  SQL99 で正式に定義されている数値関数は、それほど多くありません。これを補うために、さまざまなベンダーで非常に多くの数学関数および統計関数が提供されています。MySQL は、SQL99 の実装において、これらのコマンドの多くをサポートしています。その他のデータベース製品は、数値スカラー関数と同じ機能を独自の内部定義関数として提供していますが、これらの関数には SQL 標準とは異なる名前が付けられています。SQL99 でサポートされている数値関数とその構文を表 4.4 に示します。</p>
					</td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td valign="top" colspan="2" class="Description"><span class="title">SQL99 の数値関数 </span></td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td valign="top" colspan="2">
						<table border="1"><thead><tr><th>関数</th><th>目的</th></tr>
							</thead><tbody><tr><td>BIT_LENGTH(expression)</td><td>式に含まれるビット数を表す整数値を返します。</td>
								</tr>
								<tr><td>CHAR_LENGTH(expression)</td><td>式に含まれる文字数を表す整数値を返します。</td>
								</tr>
								<tr><td>EXTRACT(datetime_expression datepart FROM expression)</td><td>式から、datepart で指定された日付要素 (YEAR、MONTH、DAY、HOUR、MINUTE、SECOND、TIMEZONE_HOUR、または TIMEZONE_MINUTE) を抽出します。</td>
								</tr>
								<tr><td>OCTET_LENGTH(expression)</td><td>式に含まれるオクテット数を表す整数値を返します。この値は、BIT_LENGTH/8 と同じです。</td>
								</tr>
								<tr><td>POSITION(starting_string IN search_string)</td><td>検索文字列中での、ある文字列の開始位置を表す整数値を返します。</td>
								</tr>
							</tbody></table>
					</td>
				</tr>

    <tr>
      <td valign="top" colspan="2" class="CLEARSEPARATION">&nbsp;</td>
    </tr>
    <tr>
      <td valign="top" colspan="2" class="CLEARSEPARATION">&nbsp;</td>
    </tr>
    <tr>
      <td valign="top" colspan="2" class="description"><span class="title">BIT_LENGTH、CHAR_LENGTH、および OCTET_LENGTH</span></td>
				</tr>
				<tr>
					<td valign="top" colspan="2" class="description"><p>BIT_LENGTH 関数に最も近い関数を提供しているのは、Oracle です。Oracle では、式に含まれるバイト数を表す整数値を返す LENGTHB 関数がサポートされています。</p><p>MySQL と PostgreSQL では、CHAR_LENGTH と、SQL99 のシノニムである CHARACTER_LENGTH( ) がサポートされています。PostgreSQL ではこれらに加え、SQL99 に準拠して EXTRACT( )、OCTET_LENGTH( )、および POSITION( ) がサポートされています。Microsoft SQL Server と Oracle にも、同じ機能を提供する類似の関数があります。Microsoft SQL Server では LEN 関数、Oracle では LENGTH 関数が提供されています。</p><p>MySQL と PostgreSQL では、OCTET_LENGTH 関数も完全にサポートされています。</p>
					</td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td valign="top" colspan="2"><span class="title">例	</span></td>
				</tr>
				<tr>
					<td><p>次の例では、文字列の長さと、列から取得される値の長さを調べます。</p>
					</td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td><span class="programlisting"><pre>/* On MySQL and PostgreSQL */
SELECT CHAR_LENGTH('hello');
SELECT OCTET_LENGTH(book_title) FROM titles;

/* On Microsoft SQL Server */
SELECT DATALENGTH(title)
FROM titles
WHERE type = 'popular_comp'
GO

/* On Oracle */
SELECT LENGTH('HORATIO') "Length of characters"
FROM dual;</pre>
						</span> </td>
    </tr>
    <tr>
      <td valign="top" colspan="2" class="CLEARSEPARATION">&nbsp;</td>
    </tr>
    <tr>
      <td valign="top" colspan="2" class="example"><span class="title">EXTRACT </span></td>
				</tr>
				<tr>
					<td valign="top" colspan="2" class="description"><p>EXTRACT 関数は、PostgreSQL と MySQL 以外のデータベースベンダーではサポートされていません。</p><p>Oracle と Microsoft SQL Server では、同じ機能を提供する別のコマンドがサポートされています。Oracle では、日付の一部を抽出して文字列に変換するのに、TO_CHAR 関数を使用します。Microsoft SQL Server では、日付の一部を抽出するのに CONVERT 関数を使用します。</p><p>MySQL の実装では、SQL99 標準の一部が拡張されています。SQL99 標準では、同じ EXTRACT( ) 呼び出しの中で複数のフィールド ("DAY_HOUR" など) を返すための方法は規定されていません。MySQL の拡張は、PostgreSQL における DATE_TRUNC( ) と DATE_PART( ) の組み合わせと同じことを実現しようとするものです。MySQL では、  表 4.5 に示す日付要素がサポートされています。</p>
					</td>
				</tr>
    <tr>
      <td valign="top" colspan="2" class="CLEARSEPARATION">&nbsp;</td>
    </tr>
    <tr>
      <td valign="top" colspan="2" class="example"><span class="title">MySQL の日付要素 </span> </td>
    </tr>
    <tr>
      <td valign="top" colspan="2" class="CLEARSEPARATION">&nbsp;</td>
    </tr>
    <tr>
      <td> <table border="1" align="center">
					<tr>
					<th>
					<p>値</p></th>
					<th>
					<p>意味</p></th>
					<th>
					<p>期待されるフォーマット</p></th>
					</tr>

					<tr>
					<td>
					<p>SECOND</p></td>
					<td>
					<p>秒</p></td>
					<td>
					<p>秒</p></td>
					</tr>

					<tr>
					<td>
					<p>MINUTE</p></td>
					<td>
					<p>分</p></td>
					<td>
					<p>分</p></td>
					</tr>

					<tr>
					<td>
					<p>HOUR</p></td>
					<td>
					<p>時</p></td>
					<td>
					<p>時</p></td>
					</tr>

					<tr>
					<td>
					<p>DAY</p></td>
					<td>
					<p>日</p></td>
					<td>
					<p>日</p></td>
					</tr>

					<tr>
					<td>
					<p>MONTH</p></td>
					<td>
					<p>月</p></td>
					<td>
					<p>月</p></td>
					</tr>

					<tr>
					<td>
					<p>YEAR</p></td>
					<td>
					<p>年</p></td>
					<td>
					<p>年</p></td>
					</tr>

					<tr>
					<td>
					<p>MINUTE_SECOND</p></td>
					<td>
					<p>分と秒</p></td>
					<td>
					<p>&quot;分:秒&quot;</p></td>
					</tr>

					<tr>
					<td>
					<p>HOUR_MINUTE</p></td>
					<td>
					<p>時と分</p></td>
					<td>
					<p>&quot;時:分&quot;</p></td>
					</tr>

					<tr>
					<td>
					<p>DAY_HOUR</p></td>
					<td>
					<p>日と時</p></td>
					<td>
					<p>&quot;日 時&quot;</p></td>
					</tr>

					<tr>
					<td>
					<p>YEAR_MONTH</p></td>
					<td>
					<p>年と月</p></td>
					<td>
					<p>&quot;年-月&quot;</p></td>
					</tr>

					<tr>
					<td>
					<p>HOUR_SECOND</p></td>
					<td>
					<p>時、分、秒</p></td>
					<td>
					<p>&quot;時:分:秒&quot;</p></td>
					</tr>

					<tr>
					<td>
					<p>DAY_MINUTE</p></td>
					<td>
					<p>日、時、分</p></td>
					<td>
					<p>&quot;日 時:分&quot;</p></td>
					</tr>

					<tr>
					<td>
					<p>DAY_SECOND</p></td>
					<td>
					<p>日、時、分、秒</p></td>
					<td>
					<p>&quot;日 時:分:秒&quot;</p></td>
</tr>

        </table></td>
    </tr>
			    <tr>
			      <td valign="top" colspan="2" class="CLEARSEPARATION">&nbsp;</td>
			    </tr>
				<tr>
					<td valign="top" colspan="2"><span class="title">例</span></td>
				</tr>
				<tr>
					<td><p>次の例では、いくつかの日時値から日付要素を抽出します。</p>
					</td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td><span class="programlisting"><pre>/* On MySQL  */
SELECT EXTRACT(YEAR FROM "2013-07-02");
-&gt; 1999
SELECT EXTRACT(YEAR_MONTH FROM "2013-07-02 01:02:03");
-&gt; 199907
SELECT EXTRACT(DAY_MINUTE FROM "2013-07-02 01:02:03");
-&gt; 20102</pre>
						</span> </td>
    </tr>
    <tr>
      <td valign="top" colspan="2" class="CLEARSEPARATION">&nbsp;</td>
    </tr>
    <tr>
      <td valign="top" colspan="2" class="example"><span class="title">POSITION</span></td>
				</tr>

				<tr>
					<td valign="top" colspan="2" class="description"><p>POSITION 関数は、検索文字列中での、ある文字列の開始位置を表す整数値を返します。MySQL と PostgreSQL では、SQL99 の構文とまったく同じ形で POSITION 関数がサポートされています。これと同義の関数として、PostgreSQL には TEXTPOS、MySQL には LOCATE があります。</p><p>Oracle では、INSTR という関数が POSITION に相当します。Microsoft SQL Server には、CHARINDEX と PATINDEX という関数があります。CHARINDEX と PATINDEX はよく似ていますが、PATINDEX では検索条件にワイルドカードを使用できる点が異なります。次に例を示します。</p>
<span class="programlisting">
        <pre>/* On MySQL */
SELECT LOCATE('bar', 'foobar');
-&gt; 4

/* On MySQL and PostgreSQL */
SELECT POSITION('fu' IN 'snafhu');
-&gt; 0

/* On Microsoft SQL Server */
SELECT CHARINDEX( 'de', 'abcdefg' )
GO
-&gt; 4
SELECT PATINDEX( '%fg', 'abcdefg' )

GO
-&gt; 6
</pre></span>
					</td>
				</tr>
			</table>
		</div><DIV id="文字列関数">
  <table border="0" cellspacing="0" cellpadding="0" width="100%">
    <tr>
      <td valign="top" class="name">文字列関数</td>
      <td valign="top" nowrap class="compatibility"> </td>
    </tr>
    <tr>
      <td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
    </tr>
<tr>
      <td valign="top" colspan="2" class="description"> <p>基本的な文字列関数群には数多くの機能があります。文字列関数は、結果セットとして文字列値を返します。一部の文字列関数には項が 2 つあり、一度に 2 つの文字列を処理します。SQL99 でサポートされている文字列関数を<link >表 4.6</link> に示します。</p></td>
    </tr>
    <tr>
      <td valign="top" colspan="2" class="CLEARSEPARATION">&nbsp;</td>
    </tr>
    <tr>
      <td valign="top" colspan="2" class="description"><span class="title">SQL99 の文字列関数 </span> </td>
    </tr>
    <tr>
      <td valign="top" colspan="2" class="CLEARSEPARATION">&nbsp;</td>
    </tr>
    <tr>
      <td> <table border="1" align="center">
					<tr>
					<th>
					<p>関数</p></th>
					<th>
					<p>目的</p></th>
					</tr>

					<tr>
					<td>
					CONCATENATE(expression || expression)</td>
					<td>
					<p>2 つ以上のリテラル式、列値、または変数を 1 つの文字列として連結します。</p></td>
					</tr>

					<tr>
					<td>
					CONVERT</td>
					<td>
					<p>文字列を、同じ文字セットの範囲内で別の表現に変換します。</p></td>
					</tr>

					<tr>
					<td>
					LOWER</td>
					<td>
					<p>文字列をすべて小文字に変換します。</p></td>
					</tr>

					<tr>
					<td>
					SUBSTRING</td>
					<td>
					<p>文字列の一部を抽出します。</p></td>
					</tr>

					<tr>
					<td>
					TRANSLATE</td>
					<td>
					<p>文字列の文字セットを別の文字セットに変換します。</p></td>
					</tr>

					<tr>
					<td>
					TRIM</td>
					<td>
					<p>文字列から、先頭の文字、末尾の文字、またはその両方を削除します。</p></td>
					</tr>

					<tr>
					<td>
					UPPER</td>
					<td>
					<p>文字列をすべて大文字に変換します。</p></td>
					</tr>
					</table></td>
    </tr>


	<tr>
      <td valign="top" colspan="2" class="CLEARSEPARATION">&nbsp;</td>
    </tr>
    <tr>
      <td valign="top" colspan="2" class="example"><span class="title">CONCATENATE</span></td>
				</tr>
				<tr>
					<td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
				</tr>
				<tr>
					<td valign="top" colspan="2" class="description"><p>SQL99 には、2 つの異なる文字列を 1 つの文字列値に結合する 連結演算子 (||) が定義されています。CONCATENATE  関数は、2 つ以上の文字列を連結して 1 つの文字列を生成します。PostgreSQL と Oracle では、二重連結演算子がサポートされています。Microsoft SQL Server では、連結演算子として プラス記号 (+) を使用します。</p><p>MySQL では、同様の関数として CONCAT( ) がサポートされています。Oracle、PostgreSQL、および Microsoft SQL Server における連結の詳細については、第 3 章の「連結演算子」を参照してください。</p>
					</td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td valign="top" colspan="2"><span class="title">SQL99 の構文</span></td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td><span class="programlisting"><pre>CONCATENATE('string1' || 'string2')</pre>
						</span></td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td valign="top" colspan="2"><span class="title">MySQL の構文</span></td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td><span class="programlisting"><pre>CONCAT(str1, str2, [,...n])</pre>
						</span></td>
				</tr>
				<tr>
					<td><p>いずれかの連結対象値が NULL の場合は、返される文字列全体が NULL になります。また、数値を連結する場合は、暗黙的に文字列に変換されます。</p>
					</td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td><span class="programlisting"><pre>SELECT CONCAT('My ', 'bologna ', 'has ', 'a ', 'first ', 'name...');
-&gt; 'My bologna has a first name...'
SELECT CONCAT('My ', NULL, 'has ', 'first ', 'name...');
-&gt; NULL</pre>
						</span></td>
				</tr>
			<tr>
      <td valign="top" colspan="2" class="CLEARSEPARATION">&nbsp;</td>
    </tr>
    <tr>
      <td valign="top" colspan="2" class="example"><span class="title">CONVERT と TRANSLATE</span></td>
				</tr>
				<tr>
					<td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
				</tr>
				<tr>
					<td valign="top" colspan="2" class="description"><p>CONVERT  関数は、同じ文字セットおよび照合順序の範囲内で、文字列の表現を変換します。たとえば、文字ごとのビット数を変更するために CONVERT を使用できます。</p><p>TRANSLATE   は、文字列値の基本文字セットを別の文字セットに変更します。たとえば、ある値を英語文字セットから漢字 (日本語) 文字セットやロシア語文字セットに変換するために <span class="emphasis">TRANSLATE</span> を使用できます。変換のロジックは、デフォルトで存在しているか、または CREATE TRANSLATION コマンドを使用して作成しておく必要があります。</p>
					</td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td valign="top" colspan="2"><span class="title">SQL99 の構文</span></td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td><span class="programlisting"><pre>CONVERT (char_value target_char_set USING form_of_use source_char_name)

TRANSLATE(char_value target_char_set USING translation_name)</pre>
						</span></td>
				</tr>
				<tr>
					<td><p>データベースベンダーのうち、SQL99 と同じ意味での CONVERT と TRANSLATE をサポートしているのは Oracle だけです。Oracle による TRANSLATE の実装は SQL99 にかなり近いものですが、まったく同一というわけではありません。Oracle の実装では、指定できる引数は 2 つのみで、データベース文字セットまたは NLS (National Language Support) 文字セットとの間の変換のみがサポートされています。</p>
					</td>
				</tr>
				<tr>
					<td><p>MySQL による CONVERT 関数の実装では、数字の進数を別の進数に変換することのみがサポートされています。これとは対照的に、Microsoft SQL Server による CONVERT の実装には、式の基本データタイプを変換するさまざまな機能が備わっていますが、それ以外の点では SQL99 の CONVERT 関数とは異なったものになっています。PostgreSQL では CONVERT はサポートされていません。また PostgreSQL の TRANSLATE は、文字列を別の文字列に置換するための関数です。</p>
					</td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td valign="top" colspan="2"><span class="title">MySQL の構文およびバリエーション</span></td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td><span class="programlisting"><pre>CONV(int, from_base, to_base)</pre>
						</span></td>
				</tr>
				<tr>
					<td><p>MySQL では、TRANSLATE はサポートされていません。MySQL による CONVERT の実装では、変換元進数 (from_base) から変換先進数 (to_base) に変換した数字を表す文字列値が返されます。いずれかの数字が NULL の場合、この関数は NULL を返します。次に例を示します。</p>
					</td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td><span class="programlisting"><pre>SELECT CONV("a",16,2);
-&gt; '1010'
SELECT CONV("6E",18,8);
-&gt; '172'
SELECT CONV(-17,10,-18);
-&gt; '-H'</pre>
						</span></td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td valign="top" colspan="2"><span class="title">Microsoft SQL Server の構文およびバリエーション</span></td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td><span class="programlisting"><pre>CONVERT (data_type[(length) | (precision,scale)], expression[,style])</pre>
						</span></td>
				</tr>
				<tr>
					<td><p>Microsoft SQL Server では、TRANSLATE はサポートされていません。また、CONVERT 関数の実装は SQL99 の仕様には準拠していません。Microsoft SQL Server の CONVERT は、機能的には CAST 関数と同じです。style 句は、日付変換のフォーマットを定義するために使用します。詳細については、ベンダーのマニュアルを参照してください。次に例を示します。</p>
					</td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td><span class="programlisting"><pre>SELECT title, CONVERT(char(7), ytd_sales)
FROM titles
ORDER BY title
GO</pre>
						</span></td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td valign="top" colspan="2"><span class="title">Oracle の構文およびバリエーション</span></td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td><span class="programlisting"><pre>CONVERT('char_value', target_char_set, source_char_set)

TRANSLATE('char_value', 'from_text', 'to_text')</pre>
						</span></td>
				</tr>
				<tr>
					<td><p>Oracle による実装では、CONVERT 関数は <span class="emphasis">char_value</span> を変換先文字セットで返します。<span class="emphasis">char_value</span> は変換対象の文字列で、<span class="emphasis">target_char_set</span> は <span class="emphasis">char_value</span> の変換先の文字セットの名前です。<span class="emphasis">source_char_set</span> は、<span class="emphasis">char_value</span> の格納に使用されていた元の文字セットの名前です。</p>
					</td>
				</tr>
				<tr>
					<td><p>変換先文字セットと変換元文字セットには、リテラル文字列、変数、または文字セットの名前を格納した列のいずれかを指定できます。変換先または変換元の文字セットが、変換で使用されるすべての文字を表現できない場合、文字が不適切に置き換えられる可能性があります。</p>
					</td>
				</tr>
				<tr>
					<td><p>Oracle でサポートされている一般的な文字セットには、<span class="emphasis">US7ASCII</span>、<span class="emphasis">WE8DECDEC</span>、<span class="emphasis">WE8HP</span>、<span class="emphasis">F7DEC</span>、<span class="emphasis">WE8EBCDIC500</span>、<span class="emphasis">WE8PC850</span>、<span class="emphasis">WE8ISO8859P1</span> などがあります。次に例を示します。</p>
					</td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td><span class="programlisting"><pre>SELECT CONVERT('Gro', 'US7ASCII', 'WE8HP')
FROM DUAL;
-&gt;Gross</pre>
						</span></td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td valign="top" colspan="2"><span class="title">PostgreSQL の構文およびバリエーション</span></td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td><span class="programlisting"><pre>TRANSLATE (character_string, from_text, to_text)</pre>
						</span></td>
				</tr>
				<tr>
					<td><p>PostgreSQL では、CONVERT はサポートされていません。PostgreSQL による TRANSLATE 関数の実装は、SQL99 の仕様と比較して、機能を大幅に拡張したスーパーセットになっています。PostgreSQL の TRANSLATE 関数は、指定された文字列中に出現するあるテキスト文字列を別のテキスト文字列に変換します。次に例を示します。</p>
					</td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td><span class="programlisting"><pre>SELECT TRANSLATE('12345abcde', '5a', 'XX');
-&gt; 1234XXbcde

SELECT TRANSLATE(title, 'Computer', 'PC')
FROM  titles
WHERE type = 'Personal_computer'</pre>
						</span></td>
				</tr>
			<tr>
      <td valign="top" colspan="2" class="CLEARSEPARATION">&nbsp;</td>
    </tr>
    <tr>
      <td valign="top" colspan="2" class="example"><span class="title">LOWER と UPPER</span></td>
				</tr>
				<tr>
					<td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
				</tr>
				<tr>
					<td valign="top" colspan="2" class="description"><p>LOWER 関数と UPPER 関数では、 文字列の大文字と小文字を簡単に変更することが可能で、すべての文字をそれぞれ小文字または大文字に変換できます。これらの関数は、本マニュアルで扱うすべてのデータベースでサポートされています。</p>
					</td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td valign="top" colspan="2"><span class="title">例</span></td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td><span class="programlisting"><pre>SELECT LOWER('You Talkin To ME?'), UPPER('you talking to me?!');
-&gt; you talking to me?, YOU TALKIN TO ME?!</pre>
						</span></td>
				</tr>
				<tr>
					<td><p>他にも、さまざまなデータベースで、各ベンダー固有のさまざまなテキストフォーマット関数がサポートされています。</p>
					</td>
				</tr>
			<tr>
      <td valign="top" colspan="2" class="CLEARSEPARATION">&nbsp;</td>
    </tr>
    <tr>
      <td valign="top" colspan="2" class="example"><span class="title">SUBSTRING</span></td>
				</tr>
				<tr>
					<td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
				</tr>
				<tr>
					<td valign="top" colspan="2" class="description"><p>SUBSTRING  関数は、ある文字列から別の文字列を抽出します。</p>
					</td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td valign="top" colspan="2"><span class="title">SQL99 の構文</span></td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td><span class="programlisting"><pre>SUBSTRING(extraction_string FROM starting_position [FOR length]
[COLLATE collation_name])</pre>
						</span></td>
				</tr>
				<tr>
					<td><p>いずれかの入力が NULL の場合、SUBSTRING 関数は NULL を返します。<span class="emphasis">extraction_string</span> は、文字値の抽出元です。抽出元には、リテラル文字列、テーブル内の文字データタイプの列、または文字データタイプの変数を指定できます。<span class="emphasis">starting_position</span> は、抽出の開始位置を指定する整数値です。オプションの <span class="emphasis">length</span> は、<span class="emphasis">starting_position</span> から何文字分を抽出するかを指定する整数値です。</p>
					</td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td valign="top" colspan="2"><span class="title">MySQL の構文およびバリエーション</span></td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td><span class="programlisting"><pre>SUBSTRING(extraction_string FROM starting_position)</pre>
						</span></td>
				</tr>
				<tr>
					<td><p>MySQL の実装では、開始位置から文字列末尾までの文字が抽出されます。</p>
					</td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td valign="top" colspan="2"><span class="title">Microsoft SQL Server の構文およびバリエーション</span></td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td><span class="programlisting"><pre>SUBSTRING(extraction_string [FROM starting_position] [FOR length])</pre>
						</span></td>
				</tr>
				<tr>
					<td><p>Microsoft SQL Server は SQL99 標準をほぼサポートしていますが、COLLATE 句は使用できません。Microsoft SQL Server では、このコマンドをテキスト、イメージ、およびバイナリの各データタイプに対して使用できます。ただし、starting_position と length は、文字数ではなくバイト数を表します。</p>
					</td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td valign="top" colspan="2"><span class="title">Oracle の構文およびバリエーション</span></td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td><span class="programlisting"><pre>SUBSTR(extraction_string, starting_position [, length])</pre>
						</span></td>
				</tr>
				<tr>
					<td><p>Oracle の実装である SUBSTR は SQL99 標準とほぼ同様に動作しますが、COLLATE 句はサポートされていません。<span class="emphasis">starting_position</span> が負の数の場合は、<span class="emphasis">extraction_string</span> の末尾からカウントされます。length が省略されている場合、<span class="emphasis">starting_position</span> 以降の文字列がすべて返されます。</p>
					</td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td valign="top" colspan="2"><span class="title">PostgreSQL の構文およびバリエーション</span></td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td><span class="programlisting"><pre>SUBSTRING(extraction_string [FROM starting_position] [FOR length])</pre>
						</span></td>
				</tr>
				<tr>
					<td><p>PostgreSQL は SQL99 標準をほぼサポートしていますが、COLLATE 句は使用できません。</p>
					</td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td valign="top" colspan="2"><span class="title">例</span></td>
				</tr>
				<tr>
					<td><p>次の例は、基本的に、本マニュアルで扱っている 4 つのデータベースのいずれでも動作します (Oracle の実装名である SUBSTR を SUBSTRING に変更した場合)。ただし、開始位置が負である 2 番目の Oracle の例だけは、他のデータベースでは動作しません。</p>
					</td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td><span class="programlisting"><pre>/* On Oracle, counting from the left */
SELECT SUBSTR('ABCDEFG',3,4) FROM DUAL;
-&gt; CDEF

/* On Oracle, counting from the right */
SELECT SUBSTR('ABCDEFG',-5,4) FROM DUAL;
-&gt; CDEF

/* On MySQL */
SELECT SUBSTRING('Be vewy, vewy quiet',5);
-&gt; 'wy, vewy quiet''

/* On PostgreSQL or SQL Server */
SELECT au_lname, SUBSTRING(au_fname, 1, 1)
FROM authors
WHERE au_lname = 'Carson'
-&gt; Carson     C</pre>
						</span></td>
				</tr>
			<tr>
      <td valign="top" colspan="2" class="CLEARSEPARATION">&nbsp;</td>
    </tr>
    <tr>
      <td valign="top" colspan="2" class="example"><span class="title">TRIM</td><td valign="top" nowrap class="compatibility">&#160;</td>
				</tr>
				<tr>
					<td colspan="2" class="divider"><img src="dwres:18084" width="100%" height="1"></td>
				</tr>
				<tr>
					<td valign="top" colspan="2" class="description"><p>TRIM    関数は、指定された文字列から、先頭の空白、末尾の文字、またはその両方を削除します。また、指定された文字列からその他のタイプの文字を削除することもできます。デフォルトの動作は、指定された文字を文字列の両端から削除することです。削除する文字が指定されていない場合、デフォルトでは空白が削除されます。</p>
					</td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td valign="top" colspan="2"><span class="title">SQL99 の構文</span></td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td><span class="programlisting"><pre>TRIM( [ [{LEADING | TRAILING | BOTH}] [removal_string] FROM ]
  target_string
  [COLLATE collation_name])</pre>
						</span></td>
				</tr>
				<tr>
					<td><p>removal_string は、削除対象の文字列です。target_string は、文字の削除元となる文字列です。removal_string を指定しない場合、空白が削除されます。COLLATE 句は、関数の結果セットに対し、強制的に別の既存の照合順序セットを適用します。</p>
					</td>
				</tr>
				<tr>
					<td><p>MySQL、PostgreSQL、および Oracle では、TRIM の SQL99 構文がサポートされています。</p>
					</td>
				</tr>
				<tr>
					<td><p>Microsoft SQL Server (とその他のベンダー) は、先頭の空白または末尾の空白を削除するために、それぞれ LTRIM 関数と RTRIM 関数を提供しています。LTRIM と RTRIM では、その他の種類の文字を削除することはできません。</p>
					</td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td valign="top" colspan="2"><span class="title">例</span></td>
				</tr>
				<tr><td valign="top" colspan="2" class="clearseparation">&#160;</td>
				</tr>
				<tr>
					<td><span class="programlisting"><pre>SELECT TRIM('   wamalamadingdong  ');
-&gt; 'wamalamadingdong'

SELECT TRIM(LEADING '19' FROM '1976 AMC GREMLIN');
-&gt; '76 AMC GREMLIN'

SELECT TRIM(BOTH 'x' FROM 'xxxWHISKEYxxx');
-&gt; 'WHISKEY'

SELECT TRIM(TRAILING 'snack' FROM 'scooby snack');
-&gt; 'scooby '</pre>
						</span></td>
				</tr>
			</table>
		</div>
	</body></html>