查询生成插入语句的人:无效数字

12 浏览
0 Comments

查询生成插入语句的人:无效数字

我试图执行一个生成插入语句的查询,像这样:\n

select 
  'insert into MYTABLE (
    ID, 
    COLUMN_A, 
    COLUMN_B)
  values (' + 
    ID + ',' +
    COLUMN_A + ',' +
    COLUMN_B  
as INSERTGENERATOR from MYTABLE;

\n但是我遇到了这个错误:\n

ORA-01722: 无效数字
01722. 00000 -  "无效数字"
*原因:
*操作:

\n为什么会出现这个错误?\n我尝试使用||代替+,还尝试使用to_char,但是没有改变。

0
0 Comments

问题的原因是在生成insert语句时,使用了字符串字面量拼接的方式,但是拼接的内容是列名而不是具体的值。因此,需要将列名进行拼接,才能生成正确的insert语句。

解决方法是使用最新的字符串字面量特性q'[]'。通过将insert语句放在q'[]'中,可以避免使用字符串拼接的方式,从而简化生成insert语句的过程。

示例代码如下:

SELECT q'[insert into MYTABLE (
  ID,
  COLUMN_A,
  COLUMN_B)
  values ('ID', 'COLUMN_A','COLUMN_B')]'
  AS INSERTGENERATOR
FROM DUAL

这样就可以生成正确的insert语句:

insert into MYTABLE (
ID,
COLUMN_A,
COLUMN_B)
values ('ID', 'COLUMN_A','COLUMN_B')

这种新的字符串字面量技术在构建复杂的动态字符串时非常有用。

通过使用q'[]'来生成insert语句,可以避免使用字符串拼接时可能出现的错误,并简化代码的编写过程。

0
0 Comments

(Query who generates insert statements : invalid number)这个问题的出现的原因是在执行SQL查询时,出现了"invalid number"错误。这个错误通常是由于在SQL语句中使用了无效的数字造成的。

解决这个问题的方法是检查SQL语句中的数字部分,确保它们是有效的数字。可能的原因是在拼接SQL语句时,某些列的值被错误地解析为非数字类型。

在给定的示例中,问题出现在以下SQL语句中:

'INSERT INTO MYTABLE 
  (ID, COLUMN_A, COLUMN_B)
   VALUES (' || 
    ID || ',' ||
    COLUMN_A || ','||
    COLUMN_B || ');'

为了解决这个问题,我们需要确认ID、COLUMN_A和COLUMN_B列的值是有效的数字。可以通过使用合适的数据类型转换函数来确保这一点,如以下示例所示:

'INSERT INTO MYTABLE 
  (ID, COLUMN_A, COLUMN_B)
   VALUES (' || 
    TO_CHAR(ID) || ',' ||
    TO_CHAR(COLUMN_A) || ','||
    TO_CHAR(COLUMN_B) || ');'

通过在列的值周围添加TO_CHAR函数,我们可以将其转换为字符串,从而避免"invalid number"错误。这将确保只有有效的数字被拼接到SQL语句中。

通过对SQL语句进行适当的更改,我们可以解决出现"invalid number"错误的问题,并正确生成INSERT语句。

0
0 Comments

(Query who generates insert statements : invalid number)问题的出现原因是在生成插入语句时,对于数字类型的列,没有将其转换为字符串类型进行拼接。解决方法是在拼接时,使用TO_CHAR()函数将数字类型的列转换为字符串类型。

以下是修正后的代码:

select 
  'insert into MYTABLE (ID, COLUMN_A, COLUMN_B) values (' ||
    TO_CHAR(ID) || ',' ||
    TO_CHAR(COLUMN_A) || ',' ||
    TO_CHAR(COLUMN_B) || ');'
as INSERTGENERATOR from MYTABLE;

通过以上修改,可以避免出现"(Query who generates insert statements : invalid number)"错误。

0