![OracleのVARCHAR2で文字数指定で登録する方法~CHARとの違い、処理速度の差も~](https://nakayama-tech.com/wp-content/uploads/2019/03/3TOP_5.jpg)
中山テック 代表の中山です。
備忘かつ専門的ブログのため、興味ない人は飛ばしちゃってください(汗
さて、今回はOracleをいじっている際に文字数で格納したいということがありました。
通常、マルチバイト文字(全角、半角カナ等)はSJISなら2バイト、UTF-8であれば
サーバによりますが、3バイトで表現されてデータベースも3バイト文字として認識される可能性があります。
今回はOracle VARCHA2についてと文字数指定する方法をお話したいと思います。
DDL(CREATE TABLEと言ったデータ定義構文)で下記のように定義します。
カラム名 VARCHAR2(文字数 CHAR)
「USER_NAME VARCHAR2(40 CHAR)」であれば全角関係なく40文字まで格納できます。
つまり、マルチバイト文字を1文字として換算することが可能です。
どのような処理をしているかはわかりませんが、恐らくメモリ領域が多めに取られているのかと。
本来はVARCHAR2(120)と定義するのが正しいのでしょうが半角が120文字入る計算になります。
バイト数関係なく一定の文字数で実現したい時に使われます。
CHARとVARCHAR
余談かもしれませんが、CHARとVARCHARの違いは何かご存知でしょうか。
CHARは最大値40の場合、「1234567890」と入れたら後ろ30バイト半角スペースが入ります。
メモリは常に40バイトを取得します。
対するVARCHARは空白は付かず、文字数分の容量を取得します。
上記の数値であれば10バイトのみをメモリに格納。
ただし、カラムによってバイト数が変わるので処理に時間が掛かるデメリットがあります。
![](https://nakayama-tech.com/wp-content/uploads/2023/12/char-varchcar2-1024x173.png)
- システム開発関連記事
- Excel(エクセル)のフィルターで空白セルがあるとソートされない場合の対処法
- CentOSでインストール不可?mirrorlist.centos.orgがアクセスできない件
- 【カテゴリ別】プログラミング言語をご紹介
- Lenovo ThinkPad E14 Gen2 を購入しました
- NginxにDigest(ダイジェスト)認証を組み込む~ソースのコンパイルが必要です~
- 【JavaScript×CSS】×ボタン押したら広告を削除する方法~画像代用も可~
- 【Excel】VBAでセルに色を塗る方法~かんたんなガントチャートを例に~
- 代表の技術経歴をご紹介!~業種編~
- 広告掲載URLの提出が求められたら?~抽出方法とまとめて提出する方法~
- Excel(エクセル)で図形(オブジェクト)内の文字列をVBAで検索~グループ化してても検索可~
使い方
CHARの使い道ないのではないか?と思う方もいらっしゃると思います。
しかし、フラグ(0~5とか)の場合は固定長のCHARが威力を発揮します。
固定で処理の早いCHARで1桁のフラグを作ることで処理速度を速めます。
対するVARCHARはユーザ名を入れると言った場合に使えます。
CHARで取ると後ろの空白まで取得し、アプリ側で空白を消すなどと言った処理が必要になり
更に処理に時間が掛かってしまいます。
それぞれの役割を適切に使うことが求められます。
まとめ
いかがでしたでしょうか。
と言っても代表の備忘ですのでメモ書き程度になってしまいましたが(汗
同じデータベースを使う者として、参考になったら幸いです。
※datapumpに関する記事も執筆してますので是非ご覧ください
前職はゴリゴリの営業マン(保険売りまくってた)
大抵のプログラミングはこなせます
環境構築もそれなりに出来るかと思います
趣味はゲーム、競馬、食べ歩き、旅行など
備忘と記録を残すためにブログを執筆しております
お仕事のお話は問い合わせフォームからお気軽にお声掛けください♪