次のクエリを挿入しようとすると、構文エラーが発生します。以下のクエリについて教えてください。
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',' '))
その場合、文字列リテラル内の一重引用符をエスケープする必要があります。これを行うには、引用符を 2 倍にします。
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 関数は存在します
内側の一重引用符を適切にエスケープしてみてください
INSERT INTO ABCTABLE (COLUMN1)
VALUES ('**DECODE**(MDSE_CD,NULL,''0000000000000000'',**LPAD**(TO_NUMBER(MDSE_CD,''16'','' ''))');
何を保存しますか...文字列リテラル'DECODE(MDSE...))'
ですか、それとも関数を呼び出して値を取得したかったですか?
一重引用符を含む文字列リテラルを格納するには、文字列内の各一重引用符を追加の一重引用符で「エスケープ」する必要があります。
O'Hare Int'l ==> 'O''Hare Int''l'
DECODE
関数は Oracle 固有です。その式は、MySQL と SQL Server の両方で異なる関数を使用して書き直す必要があります。