我正在尝试插入以下查询,但出现语法错误。您能帮我解决以下问题吗:
INSERT INTO ABCTABLE (COLUMN1) values ('DECODE(MDSE_CD,NULL,'0000000000000000',LPAD(TO_NUMBER(MDSE_CD,'16',' '))');
我正在尝试插入以下查询,但出现语法错误。您能帮我解决以下问题吗:
INSERT INTO ABCTABLE (COLUMN1) values ('DECODE(MDSE_CD,NULL,'0000000000000000',LPAD(TO_NUMBER(MDSE_CD,'16',' '))');
由于除了“此查询不起作用,请修复它”之外,您还没有真正说过任何话,因此我必须在黑暗中刺伤您想要的东西。因此,根据您的查询,我猜您希望该列的值为DECODE(MDSE_CD,NULL,'0000000000000000',LPAD(TO_NUMBER(MDSE_CD,'16',' '))
在这种情况下,您必须转义字符串文字中的单引号。通过加倍引号来做到这一点:
INSERT INTO ABCTABLE (COLUMN1)
VALUES ('DECODE(MDSE_CD,NULL,''0000000000000000'',LPAD(TO_NUMBER(MDSE_CD,''16'','' ''))')
尝试正确转义内部单引号
INSERT INTO ABCTABLE (COLUMN1)
VALUES ('**DECODE**(MDSE_CD,NULL,''0000000000000000'',**LPAD**(TO_NUMBER(MDSE_CD,''16'','' ''))');
问题是引号的使用。如果我们试图分解您的查询,它将如下所示:
INSERT INTO ABCTABLE
(COLUMN1)
values
(
'DECODE(MDSE_CD,NULL,'
0000000000000000
',LPAD(TO_NUMBER(MDSE_CD,'
16
','
'))'
);
...这显然没有意义。
您可能想考虑如何在字符串中转义引号。
Sql 服务器:
Sql Server 中的 DECOD 函数可以替换为 CASE 构造
Sql Server 中的 LPAD 函数没有直接对应关系,但您可以使用字符串管理函数 REPLACE 填充字符串(将字符复制指定次数)
我的 SQL:
MySql 中的 DECOD 函数可以替换为 CASE 构造
MySql 中的 LPAD 函数是存在的
你想存储什么......一个字符串文字'DECODE(MDSE...))'
,或者你想调用一个函数来派生一个值?
要存储包含单引号的字符串文字,您需要使用额外的单引号“转义”字符串中的每个单引号,例如
O'Hare Int'l ==> 'O''Hare Int''l'
该DECODE
功能是 Oracle 特定的。该表达式需要使用 MySQL 和 SQL Server 中的不同函数重写。