oraclesqlwherein
① oracle,where in,数据库语法
两个结果之间要用逗号分割
你的可以写为
select * from tab
where id in (select xid frmo tabl) or id in ('1','2', '3', '4')
你那样写语法不对
② oracle中运行sql查询,where条件in()中的字段会不会出发索引
这个要看oracle优化器自己选择是否要使用INDEX了。这个要取决于你表name列的数据唯一性和分布。分以下2种情况。
1.name的唯一性较差:
('name1','name2','name3','name4','name5')条件访问的数据占全表数据的百分比很大,索引访问的总成本大于全表扫描的成本。这时优化器就会选择全表扫描,也就是说不会使index了。
2.name的唯一性较强
('name1','name2','name3','name4','name5')条件访问的数据占全表数据的百分比很小,这时优化器就会选择使用INDEX了,因此比没有INDEX时性能要高。
注意:ORACLE优化器了解表数据分布靠的是统计信息,因此统计信息的准确是十分重要的,否则也会产生错误的选择,导致性能下降。
③ oracle数组 拼到sql的in子句中去
需要创建一个split函数来实现,具体如下:
CREATE function [dbo].[split](@aString varchar(8000),@pattern varchar(10))
returns @temp table([Sid] [int] IDENTITY (1, 1) NOT NULL ,a varchar(100))
--实现split功能 的函数
--说明:@aString,字符串,如a:b:c;@pattern,分隔标志,如 :
as
begin
declare @i int
set @aString=rtrim(ltrim(@aString))
set @i=charindex(@pattern,@aString)
while @i>=1
begin
insert @temp values(left(@aString,@i-1))
set @aString=substring(@aString,@i+1,len(@aString)-@i)
set @i=charindex(@pattern,@aString)
end
if @aString<>''
insert @temp values(@aString)
return
end
④ oracle数据库SQL语句select * from sys_entity_group where id in(4270,4270)查询只显示一条记录!
很简单,三种方法可以实现
1,用union
all
缺点是不灵活
select
*
from
sys_entity_group
where
id
=4270
union
all
select
*
from
sys_entity_group
where
id
=4270
2,全连接
,缺点是行数只能是表的连接后的数量
select
a.*
from
sys_entity_group
a,sys_entity_group
b
where
a.id=4270
3,利用connect
by
比较灵活,一个语句想显示多少条都行,你想显示多少条就把
rownum<6这个改成几
select
*
from
(
select
*
from
sys_entity_group
connect
by
id=id
start
with
id=4270
)
where
rownum<6
⑤ oracle sql where in 几个字段
根据我理解的应该是插入一个表的数据来源是一个表结构数据类型,可以参考以下SQL:
insert into tablename (column1)
select col.value from table('111','222','33333') col
这是ORACLE的表结构查询数据语法,可以去网上查询一下。
⑥ oracle 存储过程 sql中in变量问题
我理解楼主的意思是这样的.这个静态使用有问题.
如果就直接这样执行的话,
select count(*) into v_count from t where type in(a);
应该是有问题的.
可以这样尝试一下:
a varchar2(N);
execute immediate 'select count(1) from t where type in('||a||')' into v_count ;
还要注意传入的变量,引号别弄丢了...
应该是可以的,我没有测试,很久没有动过这些了.
⑦ Oracle sql查询 in 条件语句
你这样的语句本身应该是有问题的吧,你是想要实现什么样的效果,如果只是想找出tableName表中不同的id,可以这样查:
select distinct id from tableName;
⑧ oracle sql语法 in 的疑问
简单来讲这是一个书写不规范的SQL语句,容易让人产生歧义。对于多表的嵌套查询规范是每个表都要有别名,指定字段时更要指定是哪个表的字段,这样的代码才清晰易读。
复杂来讲就是人可能产生歧义,但机器不会。写这个语句的人就是利用了机器运行语句时的逻辑去写的代码,更多的是为了增加代码复杂度,妨碍他人阅读理解他的代码。或者就是这个人的编码习惯就是如此,具有某种编码强迫症。
⑨ oracle 存储过程sql中in 参数怎么传入调试
右击存储过程,选择
测试create
or
replace
procere
pd1(p_1
number,p_2
number,p_3
number)
is
v_sql
varchar2(4000);
begin
v_sql:='select
*
from
table
where
id
in('||p_1||','||p_2||','||p_3||')';
execute
immediate
v_sql;
end;