oracle写sql,将数字范围,例如:1-10拆分为10个数字:1,2,3,4,5,6,7,8,9,10

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-01
oracle存储过程传入一个字符串参数'1,2,3,4,5,6,7,8',如何分割并转为数字?

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,不过你得测一下

  • oracle数据库中要修改number(10)字段的前两位的的数字.SQL语句咋写...
    答:update 表名 set 字段名=to_number('12'||substr(to_char(字段名),3)) where length(字段名)>1;长度是2和大于2的都会修改。
  • oracle sql语句中,有没有能够将结果集中数字替换成汉字的函数?_百度...
    答:oracle 中的instr替换成sqlserver的什么函数 Oracle:INSTR(<C1>,<C2>[,I][,J]) SQL Server:CHARINDEX(<C1>,<C2>[,I]) 说明:在C2中从I开始搜索C1第1次出现的位置。I:默认1 java中数组的替换当中,如何使用fill()将数字替换成符号 当数据元素为对象时,数据的元素先要初始化,才能使用...
  • 在Oracle中取第10条记录到第20条记录,效率最高的SQL语句怎么写
    答:select from (select t.*, rownum as rn from tablename t where rownum <= 20)where rn > 10
  • 如何调整oracle中的sql语句输入的最大长度
    答:Oracle SQL 语句in长度不得超过1000 IN 子句中的LIST个数最长为1000,超过该数目将报错,这里可转用一个临时表来解决;CREATE TRIGGER语句文本的字符长度不能超过32KB(触发器中不能使用LONG, LONG RAW 类型;触发器内可以参照LOB 类型列的列值,但不能通过 :NEW 修改LOB列中的数据;)顺便说一下,触发...
  • 我在写一个SQL,在oracle中取数,数字的正负号代表方向,取正数负数的数值...
    答:select distanct * from 表名 where abs(表名.列名)=(select max(abs(表名.列名)) from 表名)
  • oracle sql 查询出sum(tot)一个数字字段,想转换成保留两位TO_CHAR(s...
    答: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'))
  • 请问oracle如何写一条简单的SQL获取连续20个数,如1 2 3 4 5 6 7...
    答:select rownum from tablename where rownum<21;(tablename 里的记录数不少于21行)
  • Oracle PL/SQL程序设计,用LOOP循环计算1到该数字之间所有整数和; 不懂...
    答:你的结果没有问题啊 可以优化一下:s := s + i; -- 改为: s := s + c;i:=i+1; --这句可以不要了
  • oracle sql语句中,有没有能够将结果集中数字替换成汉字的函数?_百度...
    答:用decode()函数。具体语句为:select decode(flag,1,'是',0,'否') from table,语句的意思是选择表中的“1”替换为“是”,“0”替换为“否”。decode函数,是oracle公司的SQL软件ORACLE PL/SQL所提供的特有函数计算方式,以其简洁的运算方式,可控的数据模型和灵活的格式转换而闻名。decode的语法...
  • oracle 查询语句,时间范围
    答: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这种吗?