【Access】データ型変換まとめ【文字列・数値・日付など】

スポンサーリンク
アイキャッチ 猫Access
スポンサーリンク

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

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

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

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

スポンサーリンク

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

文字列⇔数値

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

CInt([項目名])

変換例

変換前変換後
-1,234-1234
-1234.5-1234
1,000.0011000
00
(Null)#エラー
-1.001-1
1234.51234
¥1,2341234

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

CLng([項目名])

変換例

変換前変換後
-1,234-1234
-1234.5-1234
1,000.0011000
00
(Null)#エラー
-1.001-1
1234.51234
¥1,2341234

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

CDbl([項目名])

変換例

変換前変換後
-1,234-1234
-1234.5-1234.5
1,000.0011000.001
00
(Null)#エラー
-1.001-1.001
1234.51234.5
¥1,2341234

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

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

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

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

・数値→文字列

CStr([項目名])

変換例

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

↓ 文字列変換

文字列文字列文字列文字列
100010001000.0011000.001
1111
0000
-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([項目名])

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

変換前変換後
20210501#エラー
2021/05/022021/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を使用するのがおすすめです。

変換例

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

変換例

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

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

・日付型→文字列型

CStr([項目名])

変換例

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

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

変換関数はありません。

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

数値→通貨型

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バリアント型数値の場合は倍精度浮動小数点型の範囲と同です。
数値以外の場合は文字列型の範囲と同じです。

本ブログで一押しのオンラインスクールのご紹介♪




本ブログで一押しのオンラインスクール「Udemy」
筆者も利用しているスクールで、日頃の隙間時間に好きな講座が学べるので大活躍です♪

ジャンルが豊富で学びたい講座がきっとみつかる

AI・データサイエンスなど最先端のIT技術からプレゼンなどビジネススキルに関する講座まで15.5万以上(※海外講座含む)あるため、自分が学びたい講座をみつけることができます

お手頃な価格帯

1講座あたり数千~数万円程度で実践的なスキルアップが可能です。
講座は一度購入すれば視聴期限なく受講でき、30日返金保証もついているので安心して始めることができます。

学びやすい多彩な機能

0.5~2倍の変速機能で自分のペースで受講が可能、専用アプリを使えばスマホからオフライン環境でも視聴が可能です!
また、講師に直接掲示板から質問ができるので疑問を解決し自学自習をサポートしてくれます。

購入前に視聴できますので、是非興味のある方は↓をクリックしてみてください。




AccessOfficeVBAプログラミング
スポンサーリンク
nyanblog
タイトルとURLをコピーしました