関工健児誇りあれ!?

下関のブログです(^^)v 明日見村 MotoG5Plus Windows10 Kindle iPhone Access Excel VBA ALCATEL IDOL4 Zenfone2 ZE551ML CHUWI Hi8 目標は?100kb/s でも読めるアホblog です

DB SQL文 Access と、SQL Server 等の注意点?

--- 2020-04-11 ---

 

忙しいぃぃぃ〜ぞぉぉぉ〜?

(^^)?

本当ニャンコ?

(=^^=);

まっ、そぉ〜言う事にしといて下さい

で、、、新下関のお天気です

雨降りそう?

きっと降る

地方気象台も、きっと降る

夕方以降、きっと降る

そぉ〜言う感じなお天気模様でございます

明日は雨な感じですので、お洗濯するなら今日、日中が良いと思います

(^^)?

梅雨なのか?

(^^);

流石に、まだまだ先でしょうけど、

昨年は梅雨なし、冬なし、って感じでしたので、

めちゃ早い、梅雨時期が到来するかも知れません

(^^);;

出来れば、降る時は降る

降らない時は、曇りっぽくても降らないぞ!

で、、、お願いします、お天とう様、とうって道でしたっけ?

は、、、置いといて?

 

---

以前、カキコしました、データベースのSQL文のお話しです

Access と、SQL Server は、SQL Server から見れば、下位への互換がありますョ

な、、、お話しだけだったと思います

で、、、構文は、Access で通れば、SQL Server でもOK と思われます

今知らないです、確か、SQL Server2000 のデータベースでテストしてる時に、テストデータでアレこれ確認したかったので、面倒なので、アクセスに落としてテストしてた時に気が付きました

は、、、置いといて?

とは、言いつつも、考慮事項は有るのです

 

(注意点)

1) 文字数の定義

X=1Byte、N=全角2Byte日本語、です

例えば、SQL Server が、文字列バイトでX(20)=N(10)

この時に、Access DB で毎回、迷ってしまうのです

Access は、文字数なのです

なので、適当なテスト環境だったら、デフォルトがX(255) だったと思いますので、大きめにそのままでも良いのです

が、、、割と文字切れなども確認したいなぁ〜って時は、合わせたい、なるべくネ

(@@)?

で、、、答え的に言いますと?

20文字が正しい判断だと思います

全部、日本語だと、バイト数だと、X(40) になりますけどネ

そこは、テストデータ作成時や入力作業で自分で上手く調整しないといけません

(^^);

全角半角混在で無ければ問題は無いのですが、、、

 

2) SQL文、文字列の取扱い

SQL Server で、文字を入れると、後ろに半角スペースで埋まります

Access ですと、敢えて空白を入れようとしないと入りません

特に、直接入力だったら、自動で消えます

入れたい時は、全角日本語のスペースだったら、手作業でも入ったと思います

と、、、後ろに空白が入っているので、項目を取得する際に、Rtrim あーるトリム=右の空白を除去する、を入れ無いとダメだったか、勝手に除去されてたかは覚えていません

基本的には、取得項目は、そのまま取得、空白付き

SQL文での、キー条件、Left Join 等では、空白除去されて、A=B空白付き、でイケてたと思います

A=Rtrim(B)、これは不要と言う事です

空白除去は、3つ有ります

Trim=両サイド

Rtrim=右

Ltrim=左

文字列の間の空白は除去されませんので、VB 系だと、Replace(...)、Strcov(...)、Excel 関数だと、Substituted(...) 忘れましたが、そんな感じだったと思います、、、まっ調べればネットに繋いでカキコしてますから分かるんですが、そこは自分で検索しましょう、、、毎回確認するのが面倒だったら自然と覚えますので!

って、、、事は?

(^^)?

鬼平は、覚えて無いンかい?

(^^);

って、、、事で、毎回、確認してる気が致します

 

3) SQL分、Null の取扱い

文字列、数値も同様ですが、SQL Server で、Null 許可要否が有った気がしますが、覚えていません ^^;

基本的には、Null 否で設計すると思われますので、Access Default のNull 許可を確認した方が良いのです

で、、、Null 系ですと?

Nz(...)

IsNull(...)

Is Not Null

こう言う感じな関数な予約語が使えます

この辺りも考慮しないと駄目なのです

例えば、A に文字が入っていますか?

Null 許可だと?

   A Is Null

   Nz(A, '')=''

   IsNull(A)=True、これは=True は不要です、以前カキコしましたが、条件文などで、1〜30 が抜けるのでは無く、1〜30 の条件に合ったTrue 真が抜けてるダケなのです、ビミョ〜に意味が違うので、理解してた方が良いです

逆だと? 先頭などに、Not を付けるか、条件をカッコで括り、= False、=0、などで書けば逆が抜けます

   A Not Is Null

   Nz(A, '')>''

   Not IsNull(A)、IsNull(A)=False、同じ意味です

 

なので、、、SQL の構文自体はエラーにはなりませんが、DB のTable テーブル設定が、Access と同じに出来るかは、切り替える時には確認した方が良いのです

Null の取扱いは、面倒だったり、便利だったり、その時々で色々です

なので、、、よぉ〜く考えてから設計 --> 作成 致しましょ

(^^);

でも、まぁ〜、デフォルトが、Null 許可がアクセスですから、敢えて触るのも面倒ですしネ

って、、、事も有りますョ

な、、、意味不明な、でも重要なカキコでした

 

まっ、Access DB だと、バックパックもコピーで出来ますし、テスト環境の切り替えも簡単ですし、基本的には、メインフレームからの2次加工的な管理が主だと思われますので、当面、簡単なデフォルトで作っておいて、SQL Server DB へ移行させた時に、全部、見直してヤるぅぅぅ〜?

(^^)?

くらいの覚悟で作るのが良いかもデス

(^^);

どっちにしても確認は必要ですからネ

まっ、、、大変だと思います

な、、、文字列操作と、Null な取扱いの、お話しでちた

 

---

また又、個室の作業です

(^^)?

もうすぐ、そこは?

(^^);

お昼どき?

、、、お休みなので、お買物が有れば、これから買い出しに行かないと?

雨、降るかもネ?

(=^^=);

急がなきゃ???

 

---

日見村

村長さんでした

(^^)/ SQL