nchar和varchar2转换的奇怪问题

fosjos 2008-03-03 01:37:23
oracle 9i
create table TB1
(
ID NUMBER(10) not null,
CODE NCHAR(20),
NAME VARCHAR2(100)
)

create or replace function format(code in varchar2)
return varchar2 deterministic
as
begin
return replace(code,'-','');
end;

select rownum,code,format(code) as code0 from tb1 where rownum<=300;

结果是前100条的code0值正常?100后面的code0都是null?
也就是说:不管format怎么写,执行100次后,参数code将不能从nchar转为varchar2

我有两个表用到,分别是nchar和varchar2类型的字段
如果format(code in nvarchar2),则format(varchar2字段)就是null
sql直接调用oracle自带的replace就没问题

装了oracle 10和11的朋友也顺便帮我测测,谢谢拉
...全文
199 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
fosjos 2008-03-03
  • 打赏
  • 举报
回复
我这样插入数据也试过

delete from tb1;
insert into tb1 (
select rownum as id, substr(col,1,10) as code, col as name from tb0 where rownum<=500
);
codearts 2008-03-03
  • 打赏
  • 举报
回复
测试了一下,我的oracle9i,没有你说的现象

是你的数据有问题?

17,088

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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