0

ORACLE SQL DEVELOPER を使用しています。テーブルを作成しました

Create table building(
building_ID varchar2(5) Primary Key, 
building_name Varchar2(50),
shape MDSYS.SDO_GEOMETRY);

INSERT INTO USER_SDO_GEOM_METADATA 
  VALUES (
  'building',
  'shape',
  SDO_DIM_ARRAY(   -- 20X20 grid
    SDO_DIM_ELEMENT('X', 0, 100, 1),
    SDO_DIM_ELEMENT('Y', 0, 100, 1)
     ),
  NULL   -- SRID
);

CREATE INDEX building_index
   ON building(shape)
   INDEXTYPE IS MDSYS.SPATIAL_INDEX;

executeUpdate()を使用してJavaプログラムを使用して値を挿入しました

今、私はOracleデータベースを使用してクエリを実行します

select * from building;

すべての行が表示され、出力は- ここに画像の説明を入力

しかし、Oracleデータベースにクエリを実行すると

SELECT building_ID
  FROM building 
  WHERE building_name = 'SSL'; OR

  SELECT c.shape.GET_GTYPE()
  FROM building c WHERE c.building_name = 'BHE';

同様に、行が表示されない where 句を含むステートメント。何が問題なのですか助けてください

4

1 に答える 1

1

Java アプリケーションは、先頭にスペースを入れてデータを挿入したようです。出力では、各データ要素の長さが 4 で、最初のバイトが 32 で、 ASCII 文字セットDUMPのスペースにマップされていることがわかります。

先頭にスペースを追加してデータをクエリできるはずです

SELECT *
  FROM building
 WHERE building_name = ' SSL'

または、データを変更して先頭のスペースを削除し、既存のクエリを使用することもできます。

UPDATE building
   SET building_name = TRIM(building_name);

これを行うと仮定すると、将来、先行スペースを挿入しないように Java アプリケーションを変更する必要があります。

于 2013-03-21T22:12:12.447 に答える