現在、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 の空白埋めを止める方法はありますか?
よろしくお願いします。