半角空白1文字のセット方法
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
harux2
投稿数: 5

Jiro123 さん、こんにちは。
自分にとって、NULLとか空文字とか最初は一体何なんだ?
と思っておりました。
それはさておき、データがセットされていないと思ったのは
1.CSVに上手く出力されなかった。
2.次に、テスト画面で半角空白を入力しても上手くいかなかった。
と言う事で、セットされてないのではないかと判断しました。
色々、教えて頂きましてありがとうございました。
自分にとって、NULLとか空文字とか最初は一体何なんだ?
と思っておりました。
それはさておき、データがセットされていないと思ったのは
1.CSVに上手く出力されなかった。
2.次に、テスト画面で半角空白を入力しても上手くいかなかった。
と言う事で、セットされてないのではないかと判断しました。
色々、教えて頂きましてありがとうございました。
投票数:0
平均点:0.00
Jiro123
投稿数: 271

データベースはOracleなのですね。
Oracleの場合、CHARやVARCHAR2のカラムでは、空文字('')は、nullとして扱われてしまうため、空文字をセットすることはできません。nullになってしまうのです。
半角空白文字はセットできます。
参考までに、SQLServerでは、CHARやVARCHARでは、空文字と半角空白文字とnullをすべて別物として区別されます。
OracleとSQLServerとで、空文字の扱いに対して、仕様の違いがあるわけです。
『SQL Server』 『Oracle』 『null』『空文字』などのキーワードで検索すると、関連情報がヒットしますよ。
結構知るひとぞ知る、のようですが、そこそこ有名な情報のようです。
uniPaaSでは、データベースから取得したデータの末尾の半角空白文字をTrimして画面に表示されます。
そのため、uniPaaSでは、半角空白文字がセットされているかを確認することができません。
SQLPlusなど、ツールを使うことで、半角空白文字がセットされていることを確認することができます。
また、uniPaaSで文字型項目がブランクになっていても、Nullをセットするようにプログラムが組まれていたり、カラム特性のnullデフォルト値設定されていなければ、半角空白文字がセットされるようになっています。
それで、投稿を読んだ後、
『どのような確認方法をされて、「半角空白文字がセットされていない」と、ご判断されましたか?』
という質問が、私の頭に最初に浮かびました。
Oracleの場合、CHARやVARCHAR2のカラムでは、空文字('')は、nullとして扱われてしまうため、空文字をセットすることはできません。nullになってしまうのです。
半角空白文字はセットできます。
参考までに、SQLServerでは、CHARやVARCHARでは、空文字と半角空白文字とnullをすべて別物として区別されます。
OracleとSQLServerとで、空文字の扱いに対して、仕様の違いがあるわけです。
『SQL Server』 『Oracle』 『null』『空文字』などのキーワードで検索すると、関連情報がヒットしますよ。
結構知るひとぞ知る、のようですが、そこそこ有名な情報のようです。
uniPaaSでは、データベースから取得したデータの末尾の半角空白文字をTrimして画面に表示されます。
そのため、uniPaaSでは、半角空白文字がセットされているかを確認することができません。
SQLPlusなど、ツールを使うことで、半角空白文字がセットされていることを確認することができます。
また、uniPaaSで文字型項目がブランクになっていても、Nullをセットするようにプログラムが組まれていたり、カラム特性のnullデフォルト値設定されていなければ、半角空白文字がセットされるようになっています。
それで、投稿を読んだ後、
『どのような確認方法をされて、「半角空白文字がセットされていない」と、ご判断されましたか?』
という質問が、私の頭に最初に浮かびました。
投票数:0
平均点:0.00
harux2
投稿数: 5

Jiro123 さん、こんにちは。
移行元)
オフコンのデータをCSVにしたもの
オラクルのデータをCSVにしたもの
移行)
1.上記のデータをMAGICに取り込み
2.新システムのテーブルレイアウトに沿ってデータ移行
3.新システムのテーブルレイアウトに沿ってCSV出力
新システム(オラクル)へデータセット)
1.SQL Loaderでセット
簡単ですが概要はこんな感じで、当社がやっている作業は
移行の部分のみでテーブル設計などには携わっていません。
上記の移行)2.の部分で、例えば品目マスタの製品種(文字1桁)
と言う項目があった時に
旧区分=>新区分
"1" => "4"
"2" => "5"
"3" => "6"
"9" => " "
こんな感じで移行したい場合に発生したのが最初の質問の内容でした。
移行元)
オフコンのデータをCSVにしたもの
オラクルのデータをCSVにしたもの
移行)
1.上記のデータをMAGICに取り込み
2.新システムのテーブルレイアウトに沿ってデータ移行
3.新システムのテーブルレイアウトに沿ってCSV出力
新システム(オラクル)へデータセット)
1.SQL Loaderでセット
簡単ですが概要はこんな感じで、当社がやっている作業は
移行の部分のみでテーブル設計などには携わっていません。
上記の移行)2.の部分で、例えば品目マスタの製品種(文字1桁)
と言う項目があった時に
旧区分=>新区分
"1" => "4"
"2" => "5"
"3" => "6"
"9" => " "
こんな感じで移行したい場合に発生したのが最初の質問の内容でした。
投票数:0
平均点:0.00
Jiro123
投稿数: 271

投稿ありがとうございます。
データ移行ですか。
移行の際に使用するのは、テキストファイル(CSVやTSVなど)ですか。それとも、データベース経由なのですか。
harux2 の投稿に、PervasiveとかSQLServerとかの記述が見受けられたのですが、移行先はデータベースですよね。
全体像が見えない。。。
後方空白文字の有無をきちんとチェックするというのは、データベース側のデータ型も関係してくると思います。
例えば、SQLServerなどのDBMSでは、CHARとVARCHARでは、格納、検索される方法、特に後方半角空白の扱いが異なりますよね。
オフコンとの違いがあるならば、それをどう扱うのかは、重要なことかと思われます。
データ移行ですか。
移行の際に使用するのは、テキストファイル(CSVやTSVなど)ですか。それとも、データベース経由なのですか。
harux2 の投稿に、PervasiveとかSQLServerとかの記述が見受けられたのですが、移行先はデータベースですよね。
全体像が見えない。。。
後方空白文字の有無をきちんとチェックするというのは、データベース側のデータ型も関係してくると思います。
例えば、SQLServerなどのDBMSでは、CHARとVARCHARでは、格納、検索される方法、特に後方半角空白の扱いが異なりますよね。
オフコンとの違いがあるならば、それをどう扱うのかは、重要なことかと思われます。
投票数:0
平均点:0.00
harux2
投稿数: 5

Jiro123 さん、こんにちは。
MAGICで開発しているシステムではありませんが、元々
オフコンを使用しているユーザで、データ移行のみを請け負って
います。
その時に、ある区分に該当する値が存在しないときには
半角空白をセットしたいと言う用件があり、この質問を
させて頂きました。
MAGICで開発しているシステムではありませんが、元々
オフコンを使用しているユーザで、データ移行のみを請け負って
います。
その時に、ある区分に該当する値が存在しないときには
半角空白をセットしたいと言う用件があり、この質問を
させて頂きました。
投票数:0
平均点:0.00
Jiro123
投稿数: 271

半角空白文字を、データとしてセットしたいというのは、どのような理由からですか。
個人的には、後方の半角空白文字に必要性を感じていないのですが、是非お聞きしたいところです。
個人的には、後方の半角空白文字に必要性を感じていないのですが、是非お聞きしたいところです。
投票数:0
平均点:0.00
harux2
投稿数: 5

丹田 昌信様
ご回答、ありがとうございます。
おっしゃるとおりでして、サブルーチンをテストするためにオンラインタスク
を使用して確認作業をしていてこの問題が気がつきました。
半角空白を入力してもTRIMされてしまっているかのような動きでした。
また、HAN(”全角空白”)でセットもして見たのですがこれもダメでした。
今は、もう例えば仮の文字 "@+"のような文字をセットして、後からスクリプト
か何かで文字列を置き換えるしかないのかなと思っています。
又は、Pervasive PSQL V10を止めて、SQL SERVER 2008に変えて項目のプロパティ
をNULL値=許可,NULL表示文字列=△にするか考えています。
△・・・半角空白
いずれにして、道筋が確認出来て(例えダメでも)大変助かりました。
自分で考えているだけですと、確証が持てませんでした。
本当に、ありがとうございました。
ご回答、ありがとうございます。
おっしゃるとおりでして、サブルーチンをテストするためにオンラインタスク
を使用して確認作業をしていてこの問題が気がつきました。
半角空白を入力してもTRIMされてしまっているかのような動きでした。
また、HAN(”全角空白”)でセットもして見たのですがこれもダメでした。
今は、もう例えば仮の文字 "@+"のような文字をセットして、後からスクリプト
か何かで文字列を置き換えるしかないのかなと思っています。
又は、Pervasive PSQL V10を止めて、SQL SERVER 2008に変えて項目のプロパティ
をNULL値=許可,NULL表示文字列=△にするか考えています。
△・・・半角空白
いずれにして、道筋が確認出来て(例えダメでも)大変助かりました。
自分で考えているだけですと、確証が持てませんでした。
本当に、ありがとうございました。
投票数:0
平均点:0.00
Tanda
投稿数: 2151

harux2 さん、こんにちは。
たしか、現在はカラムデータに半角スペースだけは登録できない
ようになっているかと思います。
試しに、オンラインタスクでキーボード入力で半角スペースだけを
入力してみられると分かると思います。入力しても、後で Trim
されてしまっています。
昔のバージョンの頃は、半角スペースだけのデータの登録もできた
頃もあったと記憶しているのですが、現在は SQL への対応とかも
あって、駄目になっているのではないでしょうか?(SQL はカラム
の余白を半角スペースで埋めています)
全角のスペースを登録しておいて、必要に応じて関数で半角に
変換するという方法では駄目ですか?
タンダコンピュータ/丹田 昌信
たしか、現在はカラムデータに半角スペースだけは登録できない
ようになっているかと思います。
試しに、オンラインタスクでキーボード入力で半角スペースだけを
入力してみられると分かると思います。入力しても、後で Trim
されてしまっています。
昔のバージョンの頃は、半角スペースだけのデータの登録もできた
頃もあったと記憶しているのですが、現在は SQL への対応とかも
あって、駄目になっているのではないでしょうか?(SQL はカラム
の余白を半角スペースで埋めています)
全角のスペースを登録しておいて、必要に応じて関数で半角に
変換するという方法では駄目ですか?
タンダコンピュータ/丹田 昌信
投票数:1
平均点:10.00
harux2
投稿数: 5

みなさんこんにちは。
いつも参考にさせて頂いております。
半角空白1文字をデータベースの文字項目にセットする事は出来ないのでしょうか?
MAGICであるサブルーチンを作成しまして、戻り値の文字項目に対して半角空白を
セットしました。
この、半角空白をテーブルに出力し、最終的にはMAGICのデータ出力と言う機能を
使用してCSVデータを出力しようとしています。
(例)
"AAAA","BBBB","△","CCCC" <- "△"のような感じです。
△・・・半角空白
ところが、テストしてみますと、サブルーチンから戻り値を、"△" とテーブルセットしても
ASCIIChr(32)とアスキー文字で指定しても、結果はTRIMされてしまったかのように
半角空白文字がセットされません。
サブールチンがダメならと言う事で、テーブルに直接 "△"やASCIIChr(32)をセットしたので
すが結果は変わりませんでした。
(動作環境)
uniPaaS Studio V1 Version 1.5 SP1b
(データベース)
Pervasive PSQL V10
を使用しています。
MAGIC.INIに何か設定が必要なのか、申し訳ありませんが教えて下さい。
よろしくお願いします。
いつも参考にさせて頂いております。
半角空白1文字をデータベースの文字項目にセットする事は出来ないのでしょうか?
MAGICであるサブルーチンを作成しまして、戻り値の文字項目に対して半角空白を
セットしました。
この、半角空白をテーブルに出力し、最終的にはMAGICのデータ出力と言う機能を
使用してCSVデータを出力しようとしています。
(例)
"AAAA","BBBB","△","CCCC" <- "△"のような感じです。
△・・・半角空白
ところが、テストしてみますと、サブルーチンから戻り値を、"△" とテーブルセットしても
ASCIIChr(32)とアスキー文字で指定しても、結果はTRIMされてしまったかのように
半角空白文字がセットされません。
サブールチンがダメならと言う事で、テーブルに直接 "△"やASCIIChr(32)をセットしたので
すが結果は変わりませんでした。
(動作環境)
uniPaaS Studio V1 Version 1.5 SP1b
(データベース)
Pervasive PSQL V10
を使用しています。
MAGIC.INIに何か設定が必要なのか、申し訳ありませんが教えて下さい。
よろしくお願いします。
投票数:0
平均点:0.00