选择什么样的数据类型来表示一个坐标序列?

fflucy 2002-06-17 02:29:29
如上,如果数据库中某一列的内容是一个坐标序列,具体序列大小不确定,
怎样存储比较好?还有,该坐标序列经常用于查询。
谢谢!
...全文
213 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhoubf725 2002-06-25
  • 打赏
  • 举报
回复
oracle中有种table的数据结构,相当于c中的数组,
用来放置坐标比较好。
TYPE TABLETYPES IS TABLE OF TYPE INDEX BY BINARY_INTERGER;来索引它。
rosewater 2002-06-25
  • 打赏
  • 举报
回复
应该是可以的
你可以试一下用字符存储,读出后再转换成number型
fflucy 2002-06-18
  • 打赏
  • 举报
回复
谢谢你,
如果我需要顺次读出每个点的坐标的话,
也可以通过写个循环,判断一下分隔符号来实现,对吧?
fflucy 2002-06-18
  • 打赏
  • 举报
回复
谢谢你,
如果我需要顺次读出每个点的坐标的话,
也可以通过写个循环,判断一下分隔符号来实现,对吧?
xg_delayth 2002-06-17
  • 打赏
  • 举报
回复
如果可以进行全表扫描则可以这样
用两个字段处理
type number(10); -- 存储共有几个点
test varchar2(200); -- 存储坐标
如果是16个点则为
test:='a1^a2^a3^a4^a5^a6^a7^a8^a9^a10^a11^a12^a13^a14^a15^a16'
然后写存储函数处理
例如判断其中是否存在一个点如下
create or replace function checkSubstring
(ACheckString in varchar2,ASubstring in varchar2,ADivChar char)return number is
tmpString varchar2(50);
tmpStr varchar2(50);
-- 创建时间: 2002-05-09 最后修改时间: 2002-05-09
-- 创建人: XG_DELAYTH 最后修改人: XG_DELAYTH
-- 功能:判断输入的字符数组中是否存在相应的子串
-- 参数:
-- ACheckString: 输入的字符串
-- ASubstring: 要判断的子字符串
-- ADivChar: 分割符号
-- 返回:成功返回0,否则返回-1
-- 举例:
-- ACheckString:'^1^2^3^4^67^23',ASubstring:'6',ADivChar:'^' 返回-1
-- ACheckString:'1^2^3^4^67^23',ASubstring:'67',ADivChar:'^' 返回0
-- 实现思想:循环的一份份取出ACheckString中的值,逐个进行比较,处理前后的分割符号
begin
tmpString:=ACheckString;
if (ACheckString is null) or (ASubstring is null) or (ADivChar is null) then
return -1;
end if;
loop
if tmpString is null then
return -1;
end if;
if substr(tmpString,1,1)=ADivChar then
if length(tmpString)<=1 then
return -1;
else
tmpString:=substr(tmpString,2,length(tmpString));
end if;
end if;
if instr(tmpString,ADivChar)<=0 then
tmpStr:=tmpString;
tmpString:=null;
else
tmpStr:=substr(tmpString,1,instr(tmpString,ADivChar)-1);
end if;
if tmpStr=ASubstring then
return 0;
end if;

tmpString:=substr(tmpString,instr(tmpString,ADivChar)+1,length(tmpString));
end loop;
end;
fflucy 2002-06-17
  • 打赏
  • 举报
回复
请大家多指教!
fflucy 2002-06-17
  • 打赏
  • 举报
回复
这里的坐标序列其实是BLOCK的属性,
每一个BLOCK我用它的一系列边缘点的坐标来表示,
譬如这个BLOCK是个矩形,那么用4个点,
圆角矩形,可能就要用16个或更多的点;
怎么才能把每一个坐标设为一条记录呢?
xg_delayth 2002-06-17
  • 打赏
  • 举报
回复
把每一个坐标设为一条记录,每个x,y,z坐标值设为一个字段,这样通过一定的索引就能容易进行查询,如果把x,y,z坐标值设为一个字段,查询时必须要进行全表扫描。

2,596

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧