Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在oracle中填写介于“L00000000”和“L00000010”之间的表_Sql_Oracle_Oracle Apex - Fatal编程技术网

Sql 在oracle中填写介于“L00000000”和“L00000010”之间的表

Sql 在oracle中填写介于“L00000000”和“L00000010”之间的表,sql,oracle,oracle-apex,Sql,Oracle,Oracle Apex,我需要帮助。有一次,有人帮我编写了一个代码,在第一个值和最后一个值之间填充一个表。这段代码运行良好,但有一个问题我无法解决 当我使用像P1_FIRST=L4819222和P1_LAST=L4819225这样的有限数时,一切正常。但当我使用极端寒冷,如L00000000和L00000010,我得到:L1,L2,L3。。。但我想看看:`L00000000,L00000001,L00000002,等等 你能帮我吗 INSERT INTO test2 (val) SELECT SUBSTR (:P

我需要帮助。有一次,有人帮我编写了一个代码,在第一个值和最后一个值之间填充一个表。这段代码运行良好,但有一个问题我无法解决

当我使用像P1_FIRST=L4819222和P1_LAST=L4819225这样的有限数时,一切正常。但当我使用极端寒冷,如L00000000和L00000010,我得到:L1,L2,L3。。。但我想看看:`L00000000,L00000001,L00000002,等等

你能帮我吗

INSERT INTO test2 (val)
SELECT    SUBSTR (:P1_FIRST, 1, 1)
      || TO_CHAR (
            (  TO_NUMBER (REGEXP_SUBSTR (:P1_FIRST, '\d+$'))
             + LEVEL
             - 1))
         AS val
 FROM dual
 CONNECT BY LEVEL <=
                TO_NUMBER (
                   REGEXP_SUBSTR (:P1_LAST, '\d+$'))
             - TO_NUMBER (
                   REGEXP_SUBSTR 
您将在Apex中使用的查询是

insert into test (val)
with subs as
  (select to_number(regexp_substr(:P1_LAST , '\d+$')) clast,
          to_number(regexp_substr(:P1_FIRST, '\d+$')) cfirst
   from dual
  )          
select 'L' || lpad(cfirst + level - 1, 8, '0') val
from subs
connect by level <= clast - cfirst + 1;
您将在Apex中使用的查询是

insert into test (val)
with subs as
  (select to_number(regexp_substr(:P1_LAST , '\d+$')) clast,
          to_number(regexp_substr(:P1_FIRST, '\d+$')) cfirst
   from dual
  )          
select 'L' || lpad(cfirst + level - 1, 8, '0') val
from subs
connect by level <= clast - cfirst + 1;

您需要使用LPAD。尝试:

SELECT SUBSTR (:P1_FIRST, 1, 1)
      ||
 LPAD(TO_CHAR (  TO_NUMBER (REGEXP_SUBSTR (:P1_FIRST, '\d+$')) + level), 8,'0') AS val 
FROM dual
connect by level < 10:
就你而言:

SELECT SUBSTR ('L00000000', 1, 1) || lpad(TO_CHAR (  TO_NUMBER (REGEXP_SUBSTR ('L00000000', '\d+$' )) + LEVEL - 1), 8, '0') AS val 
FROM dual 
CONNECT BY LEVEL <= TO_NUMBER ( REGEXP_SUBSTR ('L00000010', '\d+$')) - TO_NUMBER ( REGEXP_SUBSTR ('L00000000', '\d+$')) + 1

您需要使用LPAD。尝试:

SELECT SUBSTR (:P1_FIRST, 1, 1)
      ||
 LPAD(TO_CHAR (  TO_NUMBER (REGEXP_SUBSTR (:P1_FIRST, '\d+$')) + level), 8,'0') AS val 
FROM dual
connect by level < 10:
就你而言:

SELECT SUBSTR ('L00000000', 1, 1) || lpad(TO_CHAR (  TO_NUMBER (REGEXP_SUBSTR ('L00000000', '\d+$' )) + LEVEL - 1), 8, '0') AS val 
FROM dual 
CONNECT BY LEVEL <= TO_NUMBER ( REGEXP_SUBSTR ('L00000010', '\d+$')) - TO_NUMBER ( REGEXP_SUBSTR ('L00000000', '\d+$')) + 1

这是因为00000000<1<2<00000000 10如果你把它们当作数字。SUBSTR:P1_FIRST,1,1 | LPADTO|u CHAR TO_NUMBER REGEXP|u SUBSTR:P1_FIRST,“\d+$”+级别-1,8,'0',这是因为00000000<1<2<00000000 10如果你把它们当作数字。SUBSTR:P1_FIRST,1,1,1 | LPADTO| regu CHAR TO|TO|TO|TO| u NUMBER exp | d+$FIRST,'d++级别-1,8,',“0”我试图合并这两个代码,但我经常犯错误:将SUBSTR'L00000000',1,1 | | | to_CHAR to_NUMBER REGEXP_SUBSTR'L00000000','\d+$',lpadlevel-1,8,'0'+LEVEL-1作为val从dual CONNECT BY LEVEL添加了更多示例。看一看。我试图合并这两个代码,但我经常犯错误:在test2 val中插入选择SUBSTR'L00000000',1,1 | | | to_CHAR to_NUMBER REGEXP_SUBSTR'L00000000','\d+$',lpadlevel-1,8,“0”+级别-1作为val从dual CONNECT BY LEVEL添加了更多示例。看一看。非常感谢,我理解这段代码,所以它只与8个字符相关??是的。这是在目前的情况下,在目前的模式。如果你写更多的信息,这个决定将是普遍的。非常感谢你,我理解这个代码,所以它将只与8个字符的数字相关??是的。这是在目前的情况下,在目前的模式。如果你写更多的信息,决策将是普遍的。