解决方案 »
- oracle 查看表结构??
- 外部程序如何通过oracle用户来验证
- 安装完oracle 10g后,在服务里面一个服务都没有是怎么回事?
- 在资料中经常看到这样的话:在SVRMGRL下可以输入如下语句。然后这样写的:$ svrmgrl ,但我在sqlplus中不管怎么输都说不正确的命令啊!
- 高分求ORCALE 分页存储过程
- oracle8i下使用DBA studio工具无法将用户下的表导出,用户以DBA身份登陆。提示如下:
- 求ORACLE的函数集,不要什么超星的,希望能够方便查看查询的
- 为什么我的oracle还是不能登陆?
- 怎样在查询时不使用表中存在的索引,怎样指定使用表中的某个索引?
- 100分请教
- job的问题
- 帮忙看啊可能SQL语句,语句报错。
from et.et_user_info i
left join et.state s on s.id=case i.province when '请选择' then null else i.province end
when null then
null
when '请选择' then
null
else
s.chi_nam
end
FROM et.et_user_info i, et.state s
where i.province = s.id(+)
看你的sql中唯一可能存在转换的就是left join et.state s on s.id=i.province 这一句了
那么,可以想象,你的et.state应该是integer类型,而i.province为字符类型
SELECT '张三' username,'01' id FROM dual
UNION ALL
SELECT '李四','02' FROM dual
UNION ALL
SELECT '王五','请选择' FROM dual
),
state AS(
SELECT '01' province,'北京' chi_nam,'Beijin' eng_nam FROM dual
UNION ALL
SELECT '02','上海','Shanghai' FROM dual
)
select i.username,i.id ,Nvl(s.chi_nam ,null ) chi_nam
from et_user_info i
left join state s on s.province=i.id USERNAME ID CHI_NAM
--------------------------------
张三 01 北京
李四 02 上海
王五 请选择
select i.id ,
(case when '请选择' then null else s.chi_nam end)
from et.et_user_info i
left join et.state s on s.id=i.province
大侠分析的完全正确,但是应该怎么解决这个问题呢,我现在不可能再去改变字段的类型了
1、2、4楼的SQL还是报同样的错误,5楼的语句本身就有问题,谢谢各位解答,继续等待大侠帮忙,我自己也再想想!
--state 这个表的id和et_user_info里面的数据的是一样的不
select i.id ,
(case when i.province='请选择' then null else s.chi_nam end)
from et.et_user_info i
left join et.state s on s.id=i.province
select i.id ,case i.province when null then null when '请选择' then null else s.chi_nam end
from et.et_user_info i
left join et.state s on s.id=i.province
id 什么类型 是字符还是number
province 什么类型的
on s.id=i.province 加个to_number 或者to_char
state 表里的ID是number类型,et_user_info表里的province是VARCHAR2类型,这两个字段相关联
select i.id ,
(case when i.province='请选择' then null
when i.province is null then null
else s.chi_nam end)
from et.et_user_info i
left join et.state s on to_char(s.id)=i.province
from et.et_user_info i
left join et.state s on s.id=to_number(i.province) --orselect i.id ,decode(i.province,null,null,'请选择',null,s.chi_nam)
from et.et_user_info i
left join et.state s on s.id=to_number(i.province)
你把province字段的表做一个子查询,然后把“请选择”case成别的能转换成数值的值就行了,然后用子查询出来的表和你的主表做关联就可以了~~