oracle写sql,将数字范围,例如:1-10拆分为10个数字:1,2,3,4,5,6,7,8,9,10
create or replace type type_split as table of varchar2(50); --创建一个 type ,如果为了使split函数具有通用性,请将其size 设大些。
--创建function
create or replace function split
(
p_list varchar2,
p_sep varchar2 := ','
) return type_split pipelined
is
l_idx pls_integer;
v_list varchar2(50) := p_list;
begin
loop
l_idx := instr(v_list,p_sep);
if l_idx > 0 then
pipe row(substr(v_list,1,l_idx-1));
v_list := substr(v_list,l_idx+length(p_sep));
else
pipe row(v_list);
exit;
end if;
end loop;
return;
end split;
使用:
select * from table(split('1,2,3,4,5,6,7,8'
,','));
然后就可以通过“,”来分割数字了
请先给出明确答复:你这个问题好抽象,不懂是什么意思,二进制?
解释原因:
描述不是很清楚 有无解决办法:暂无
with bnd as
(select 5 lo, 10 hi from dual)
select to_char(wm_concat(t.r))
from
(select (select lo from bnd) -1 + level r
from dual
connect by level <= (select hi - lo + 1 from bnd)
) t
修改lo和hi的值就可以,wm_concat(t.r)
使用listagg(t.r,',') within group(order by t.r) 也可以
只需要查询系统表【dual】即可实现你的需求:
Select Rownum r
From dual
Connect By Rownum <= 10
判断字符串中全是数字,很多办法,自己写函数循环判断,正则表达式判断,我自己觉得这个可能效率比较高
length(
replace('023232','0123456789',''))=0,不过你得测一下
答:update 表名 set 字段名=to_number('12'||substr(to_char(字段名),3)) where length(字段名)>1;长度是2和大于2的都会修改。
答:oracle 中的instr替换成sqlserver的什么函数 Oracle:INSTR(<C1>,<C2>[,I][,J]) SQL Server:CHARINDEX(<C1>,<C2>[,I]) 说明:在C2中从I开始搜索C1第1次出现的位置。I:默认1 java中数组的替换当中,如何使用fill()将数字替换成符号 当数据元素为对象时,数据的元素先要初始化,才能使用...
答:select from (select t.*, rownum as rn from tablename t where rownum <= 20)where rn > 10
答:Oracle SQL 语句in长度不得超过1000 IN 子句中的LIST个数最长为1000,超过该数目将报错,这里可转用一个临时表来解决;CREATE TRIGGER语句文本的字符长度不能超过32KB(触发器中不能使用LONG, LONG RAW 类型;触发器内可以参照LOB 类型列的列值,但不能通过 :NEW 修改LOB列中的数据;)顺便说一下,触发...
答:select distanct * from 表名 where abs(表名.列名)=(select max(abs(表名.列名)) from 表名)
答:select to_char(0.23,'fm0.99') from dual第一行你写的没看明白,第二行最后少个end,第三行decode不支持这种写法,可以换成 decode(sign(sum(tot)-1),1,TO_CHAR(sum(tot),'999,999,999.99'),TO_CHAR(sum(tot),'0.99'))
答:select rownum from tablename where rownum<21;(tablename 里的记录数不少于21行)
答:你的结果没有问题啊 可以优化一下:s := s + i; -- 改为: s := s + c;i:=i+1; --这句可以不要了
答:用decode()函数。具体语句为:select decode(flag,1,'是',0,'否') from table,语句的意思是选择表中的“1”替换为“是”,“0”替换为“否”。decode函数,是oracle公司的SQL软件ORACLE PL/SQL所提供的特有函数计算方式,以其简洁的运算方式,可控的数据模型和灵活的格式转换而闻名。decode的语法...
答:sql = "select * from table1 where time >= TO_DATE('" + d1 + "','yyyy-MM-dd-hh-mi-ss') and time <= TO_DATE('" + d2 + "','yyyy-MM-dd-hh-mi-ss')";--time字段的格式确认是yyyy-MM-dd-hh-mi-ss这种吗?