Access
アイキャッチ 猫
Advertisements

AccessのクエリやVBA、SQLでよく使うデータ型変換関数をまとめました。

◇よく使うデータ型変換とは?
Googleで頻繁に検索されているものを主に紹介。
・文字列⇔数値
・文字列⇔日付型
・メモ型→文字列(テキスト型)
・数値→通貨型

その中でもあまり使わないものの説明は省略しています。

許容範囲の大きい型から小さい型への変換は注意してください!
 エラーなく桁落ちするのでバグと認識しにくいです。

よく使うデータ型変換と使用例

文字列⇔数値

・文字列→数値(整数型)

CInt([項目名])

変換例

変換前 変換後
-1,234 -1234
-1234.5 -1234
1,000.001 1000
0 0
(Null) #エラー
-1.001 -1
1234.5 1234
¥1,234 1234

・文字列→数値(長整数型)

CLng([項目名])

変換例

変換前 変換後
-1,234 -1234
-1234.5 -1234
1,000.001 1000
0 0
(Null) #エラー
-1.001 -1
1234.5 1234
¥1,234 1234

・文字列→数値(倍精度浮動小数点型)

CDbl([項目名])

変換例

変換前 変換後
-1,234 -1234
-1234.5 -1234.5
1,000.001 1000.001
0 0
(Null) #エラー
-1.001 -1.001
1234.5 1234.5
¥1,234 1234

 参考:文字列→数値においてValやCSng、CDecを使わない理由

・Val
文字列から数値への変換といえば、Val関数もありますが、
文字列に「,」や「¥」、全角文字が含まれると対応できない(値が0になる)ため、あまりおすすめできません。
汎用性を考えるとCDbl([項目名])がおすすめです。

Advertisements

・CSng
単精度浮動小数点型は演算誤差が発生しやすくおすすめできません。
そもそもややこしい分野なのであまり理解せず使用するには危険かと思います。 

・CDec
Access クエリではサポートされていません。

・数値→文字列

CStr([項目名])

変換例

数値(整数型) 数値(長整数型) 数値(単精度浮動小数点型) 数値(倍精度浮動小数点型)
1000 1000 1000.001 1000.001
1 1 1 1
0 0 0 0
-1 -1 -1 -1
-1000 -1000 -1000.001 -1000.001

↓ 文字列変換

文字列 文字列 文字列 文字列
1000 1000 1000.001 1000.001
1 1 1 1
0 0 0 0
-1 -1 -1 -1
-1000 -1000 -1000.001 -1000.001

・変換値にNullが含まれる場合

変換元の項目に値が何もない(Null)場合がありますが、
変換関数で出力される値は殆どの場合「#エラー」となってしまいます。
そのため、Nullが想定される場合はNullを指定の値に置換するNz関数を利用します。

Nz([項目名], 置換値)

例)CDbl(Nz([項目名],0))、CStr(Nz([項目名],0))
  変換前にNullが0に置換されるので、エラーとなりません。

文字列⇔日付型

・文字列→日付型

基本、日付型への変換はCDateを使用しますが、
文字列がどのような形式かでやり方が異なります。

・「YYYY/MM/DD」「YYYY年MM月DD日」「gg年MM月DD日」形式の場合
CDate([項目名])
Advertisements

変換例
「#エラー」となっている箇所については、次項から説明します。

変換前 変換後
20210501 #エラー
2021/05/02 2021/05/02
2021年5月3日 2021/05/03
令和3年5月4日 2021/05/04
2021.05.05 #エラー
(Null) #エラー
・「YYYYMMDD」形式の場合
CDate(Format([項目名],"@@@@\/@@\/@@"))

または、

DateSerial(Mid([項目名],1,4),Mid([項目名],5,2),Mid([項目名],7,2))

どちらの関数を使っても結果は特に変わらないため好みだと思いますが、
個人的には見やすく、ミスも少なそうなのでFormatを使用するのがおすすめです。

変換例

変換前 変換後
20210501 2021/05/01
・「YYYY.MM.DD」形式の場合
CDate(Replace([項目名],".","/"))

変換例

変換前 変換後
2021.05.05 2021/05/05
・文字列がNullの場合
IIf(IsNull([項目名]),Null,CDate([項目名]))

NullであればNullを返すので、エラーとなりません。

・日付型→文字列型

CStr([項目名])

変換例

変換前 変換後
2021/01/03 2021/01/03

メモ型→文字列(テキスト型)

Advertisements

変換関数はありません。

変換不要で、
・メモ型→文字列
に値の代入(更新)ができます。

数値→通貨型

CCur([項目名])

変換例

変換前 変換後
-1000.001 -¥1,000.001
(見た目上は-¥1,000)
-1 -¥1
0 ¥0
1 ¥1
1000.001 ¥1,000.001
(見た目上は¥1,000)

参考:データ型変換関数一覧
(Microsoft公式サイトより)

データ変換関数は主に以下のような「C」から始まるものがあります。
これらの他にも変換関数はありますが、これだけ知っていたら十分かと思われます。

Microsoft:データ型変換関数より引用

関数 戻り値の型 引数 expression の範囲
CBool ブール値型 任意の有効な文字列式または数式を指定します。
CByte バイト型 0 から 255。
CCur 通貨型 -922,337,203,685,477.5808 から 922,337,203,685,477.5807。
CDate 日付型 任意の有効な日付式を指定します。
CDbl 倍精度浮動小数点型 -1.79769313486231E308 から
-4.94065645841247E-324 (負の値)。
4.94065645841247E-324 から 1.79769313486232E308 (正の値)。
CDec 小数点型

小数点以下の桁数が 0 の場合 (小数部分を持たない場合)、
+/-79,228,162,514,264,337,593,543,950,335。
小数点以下の桁数が 28 桁の場合、
+/-7.9228162514264337593543950335。
最小値は、0 を除いた場合は、
0.0000000000000000000000000001。

CInt 整数型 -32,768 から 32,767。小数点以下は丸められます。
CLng 長整数型 -2,147,483,648 から 2,147,483,647。
小数点以下は丸められます。
CSng 単精度浮動小数点型 -3.402823E38 から -1.401298E-45 (負の値)。
1.401298E-45 から 3.402823E38 (正の値)。
CStr 文字列 CStr の戻り値は expression 引数に依存します。
CVar バリアント型 数値の場合は倍精度浮動小数点型の範囲と同です。
数値以外の場合は文字列型の範囲と同じです。

最後に

今回は、AccessのクエリやVBA、SQLでよく使用する以下のデータ型変換関数を紹介しました。
・文字列⇔数値
・文字列⇔日付型
・メモ型→文字列(テキスト型)
・数値→通貨型

初めにもお伝えしましたが、許容範囲の大きい型から小さい型への変換はご注意ください。

良かったらブックマーク登録して使っていただけたら嬉しいです。
ご来訪ありがとうございました♪ それでは。

Advertisements