查询空间数据库

时间:2013-03-21 21:44:48

标签: oracle11g netbeans-7

我正在使用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;

使用java程序使用executeUpdate()

插入值

现在我使用

查询oracle数据库
select * from building;

并显示所有行,输出为 - enter image description here

但是当我查询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子句no行出现的语句。有什么问题请帮忙

1 个答案:

答案 0 :(得分:1)

您的Java应用程序似乎已插入带有前导空格的数据。在DUMP输出中,您将看到每个数据元素的长度为4,第一个字节为32,映射到ASCII charcter set中的空格。

您应该能够通过添加空格来查询数据

SELECT *
  FROM building
 WHERE building_name = ' SSL'

或者您可以修改数据以删除前导空格并使用现有查询。

UPDATE building
   SET building_name = TRIM(building_name);

假设你这样做,你还需要修改你的Java应用程序,以便将来不插入领先的空间。