【问题标题】:querying a spatial database查询空间数据库
【发布时间】:2013-03-22 06:12:12
【问题描述】:

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

所有行都出现了,输出是-

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

【问题讨论】:

  • SELECT building_name, dump(building_name) FROM building 会得到什么?例如,实际的建筑物名称是否可能在末尾有额外的空格?
  • 查询输出的 sn-p - PSA Typ=1 Len=4: 32,80,83,65 OHE Typ=1 Len=4: 32,79,72,69 BHE Typ =1 Len=4: 32,66,72,69 是的,我在建筑物名称前有一个空格。并添加空格给我想要的输出..谢谢..但是有没有办法消除这个空格问题?

标签: oracle11g netbeans-7


【解决方案1】:

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

你应该可以通过在前面加一个空格来查询数据

SELECT *
  FROM building
 WHERE building_name = ' SSL'

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

UPDATE building
   SET building_name = TRIM(building_name);

假设您这样做了,您还需要修改您的 Java 应用程序,使其以后不会插入前导空格。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-01
    • 2011-07-27
    • 2023-03-29
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    相关资源
    最近更新 更多