查询空间数据库
问题描述:
我正在使用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程序的值
现在我查询使用
select * from building;
Oracle数据库,并显示所有的行,输出为 -
但是当我查询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子句没有行出现。有什么问题请帮忙
答
您的Java应用程序似乎插入了具有前导空间的数据。在DUMP
输出中,您会看到每个数据元素的长度是4,第一个字节是32,它映射到ASCII charcter set中的空格。
您应该能够在前面加上一个空格
SELECT *
FROM building
WHERE building_name = ' SSL'
,或者你可以修改你的数据删除前导空格和使用您现有的查询来查询数据。
UPDATE building
SET building_name = TRIM(building_name);
假设你这样做,你还需要修改您的Java应用程序,以便它不插入在未来领先的空间。
+0
真棒@justin – 2013-03-21 22:21:39
如果你选择了building_name,dump(building_name)FROM building',你会得到什么?例如,实际的建筑物名称最后是否有额外的空间? – 2013-03-21 21:59:10
您的查询输出的代码段 - PSA \t Typ = 1 Len = 4:32,80,83,65 OHE \t Typ = 1 Len = 4:32,79,72,69 BHE \t Typ = 1 Len = 4:32,66,72,69是的,我在建筑物名称前有一个空白区域。并添加空白区域给我所需的输出。谢谢..但是有没有办法消除这个空白问题? – 2013-03-21 22:07:19