0

現在、C アプリケーションを RdB (OpenVMS) から Oracle 11 (Linux) に移行しています。ここで、2 つのデータベース システムの違いに出くわしました。

例:

create table MYTAB(id number(13), name varchar2(10)) ;

コンテンツ

Id   Name
1    Smith
2    Smith<blank>    // trailing blank after Smith

Embedded SQL で名前を選択すると、Oracle はホスト変数の長さまで末尾にスペースを追加します。つまり、2 つの名前を区別できません。名前を TRIM しても、Oracle はスペースを追加します。

しかし、列名による Select-Statement では、正確な数のスペースを指定する必要があります。

select id from MYTAB where name ='Smith'  -> gives Id 1
select id from MYTAB where name ='Smith ' -> gives Id 2

これにより、select ステートメントと末尾のスペースの数を区別できないため、データの処理が非常に難しくなります。

Oracle の空白埋めを止める方法はありますか?

よろしくお願いします。

4

2 に答える 2

1

私は自分で解決策を見つけたと思います。オプション CHAR_MAP=STRING をプリコンパイラ呼び出しに追加すると、VARCHAR2 列を選択する埋め込み SQL 呼び出しで文字列が空白で埋められません。これで私は自分の問題を処理できます。

宜しくお願いします Jörg

于 2015-12-04T11:37:44.883 に答える