文字列関数を使って、さまざまな方法でテキストを操作する式を Access で作成できます。 たとえば、フォームのシリアル番号の一部のみを表示したい場合があります。 また、姓と名などの複数の文字列を結合 (連結) しなければならない場合があります。 式にまだ精通していない場合は、「式を 作成する」を参照してください。
Access の一般的な文字列操作と、それらを実行するために使用する関数の一覧を次に示します。
| 目的 | 使用する関数 | 例 | 結果 |
|---|---|---|---|
| 文字列の先頭から文字を返す | Left 関数 | =Left([SerialNumber],2) | [SerialNumber] が "CD234" の場合、結果は "CD" になります。 |
| 文字列の終わりから文字を返す | Right 関数 | =Right([SerialNumber],3) | [SerialNumber] が "CD234" の場合、結果は "234" になります。 |
| 文字列内の文字の位置を調べる | InStr 関数 | =InStr(1,[FirstName],"i") | [FirstName] が "Colin" の場合、結果は 4 になります。 |
| 文字列の真ん中から文字を返す | Mid 関数 | =Mid([SerialNumber],2,2) | [SerialNumber] が "CD234" の場合、結果は "D2" になります。 |
| 文字列から先頭または末尾のスペースを削除する | LTrim、RTrim、Trim 関数 | =Trim([FirstName]) | [FirstName] が "Colin" の場合、結果は "Colin" になります。 |
| 2 つの文字列を結合する | プラス記号 (+) 演算子* | =[FirstName] + [LastName] | [FirstName] が "Colin" で [LastName] が Wilcox の場合、結果は "ColinWilcox" になります |
| 間にスペースを入れて 2 つの文字列を結合する | プラス記号 (+) 演算子* | =[FirstName] + " " + [LastName] | [FirstName] が "Colin" で [LastName] が Wilcox の場合、結果は "Colin Wilcox" になります |
| 文字列の大文字と小文字を変える | UCase 関数 または LCase 関数 | =UCase([FirstName]) | [FirstName] が "Colin" の場合、結果は "COLIN" になります。 |
| 文字列の長さを調べる | Len 関数 | =Len([FirstName]) | [FirstName] が "Colin" の場合、結果は 5 になります。 |
* 問題ありません。そのため、関数ではありません。これは演算子です。 ただし、文字列を結合する最も簡単な方法です。 デスクトップ データベースでは、アンパサンド演算子 (&) を使って結合することもできます。
Access には、さらに多くのテキスト関連関数があります。 詳細については、式ビルダーを開き、関数リストを参照することをお勧めします。 式ビルダーは、式を構築するほぼすべての場所で使用できます。通常は、次のような小さな [ビルド ] ボタン
式ビルダーを示すために、フォームまたはビューの コントロール ソース プロパティから開きます。 デスクトップ データベースと Access Web アプリのどちらを使用しているかに応じて、次のいずれかの手順を使用します。
デスクトップ データベースに式ビルダーを表示する
デスクトップ データベース (.accdb) を開きます。
まだ開いていない場合は、F11 キーを押してナビゲーション ウィンドウを開きます。
既にフォームがある場合は、ナビゲーション ウィンドウで右クリックして [レイアウト ビュー] をクリックします。 操作するフォームがない場合は、[ 作成>Form] をクリックします。
フォームのテキスト ボックスを右クリックし、[プロパティ] をクリックします。
プロパティ シートで、[すべて>コントロール ソース] をクリックし、[コントロール ソース] プロパティ ボックスの右側にある [ビルド] ボタン の
をクリックします。
[式の要素] で、[関数] ノードを展開し、[組み込み関数] をクリックします。
[式のカテゴリ] で、[文字列] をクリックします。
[式の値] で、関数をクリックして、式ビルダーの下の簡単な説明を読みます。
注
コンテキストによって使える関数は違います。各コンテキストで機能する関数に応じて、一覧が自動的にフィルターされます。
TEXT 関数を結合して柔軟性を高める
一部の文字列関数には数値引数が含まれ、場合によっては、関数を呼び出すたびに計算が必要です。 たとえば、LEFT 関数は、=Left(SerialNumber, 2) のように文字列と数値を取ります。 常に左の 2 文字が必要であるとわかっている場合は便利ですが、必要な文字数がアイテムによって変わる場合はどうなるでしょうか。 文字数を "ハード コーディング" するのではなく、それを計算する別の関数を入力できます。
文字列のどこかにハイフンが含まれるシリアル番号の例を次に示します。 ただし、ハイフンの位置は異なります。
| シリアル番号 |
|---|
| 3928-29993 |
| 23-9923 |
| 333-53234 |
| 3399940-444 |
ハイフンの左に数字を表示したい場合、ハイフンの位置を確認するために毎回計算を行う必要があります。 以下の選択肢もあります。
=Left([SerialNumber],InStr(1,[SerialNumber],"-")-1)
Left 関数の 2 番目の引数として数値を入力する代わりに、シリアル番号のハイフンの位置を返す InStr 関数を接続しました。 この値から 1 を引くと、Left 関数が返す正しい文字数が得られます。 一見複雑に見えますが、少し慣れれば、複数の式を結合して目的の結果が得られるようになります。