다음 쿼리를 삽입하려고하는데 구문 오류가 발생합니다. 당신은 아래의 쿼리 좀 도와 주실 래요 :DECODE SQL의 함수
INSERT INTO ABCTABLE (COLUMN1) values ('DECODE(MDSE_CD,NULL,'0000000000000000',LPAD(TO_NUMBER(MDSE_CD,'16',' '))');
다음 쿼리를 삽입하려고하는데 구문 오류가 발생합니다. 당신은 아래의 쿼리 좀 도와 주실 래요 :DECODE SQL의 함수
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'','' ''))');
고마워,하지만 그것은 NULL 때 나는 000000000000와 함께 열을 채우기 위해 ''0 ''OR " '0000000000000000' '줄 필요합니까 – user2616054
당신은 정말 말했다하지 않았으므로, 나는 어둠 속에서 자상을해야 "이 쿼리가 작동을 수정하지 않습니다"이외의 다른 무엇을 필요. 당신이 가지고있는 질의에서, 나는 열의 값을 원하는 것으로 추측하고 있습니다. 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 서버에
LPAD 기능을 구성은 직접 대응을하지 않은하지만 당신은 복제 (패드 기능은 교체 관리 문자열을 사용하여 문자열을 수 문자 지정된 횟수의 숫자)
내 SQL은 : MySQL의에서 DECOD 기능 CASE로 대체 할 수
는 구성
MySql의 LPAD 함수가 존재 함
문자열 리터럴 'DECODE(MDSE...))'
을 저장 하시겠습니까? 값을 파생시키려는 함수를 호출하겠습니까?
작은 따옴표가 포함 된 문자열 리터럴을 저장하려면 추가 작은 따옴표로 문자열 내 각 작은 따옴표를 "이스케이프"해야합니다.
O'Hare Int'l ==> 'O''Hare Int''l'
DECODE
기능은 오라클 고유의 것입니다. 이 표현식은 MySQL과 SQL Server에서 서로 다른 함수를 사용하여 다시 작성해야합니다.
나는 우리가 그 성명서로 무엇을 성취하려고하는지 정말로 알 필요가 있다고 생각한다. 구문 오류를 수정할 수 있습니다. 그러나 새로운 행 삽입, 테이블의 기존 행 업데이트, COLUMN1에 리터럴 문자열 할당? – spencer7593