programing

큰따옴표가 있는 문자열을 표에 삽입

muds 2023. 7. 20. 22:10
반응형

큰따옴표가 있는 문자열을 표에 삽입

Oracle 10g을 사용하고 있는데 큰따옴표가 있는 문자열을 테이블에 삽입하는 데 문제가 있습니다.이것이 제 진술입니다.

INSERT INTO USERS (ID, NAME, USERNAME) VALUES (NULL, "tes", "hello");

위 쿼리는 "Oracle column not allowed here" 오류와 함께 실패합니다.

아래와 같이 큰따옴표를 작은따옴표로 바꾸면 문장이 성공합니다.

INSERT INTO USERS (ID, NAME, USERNAME) VALUES (NULL, 'tes', 'hello');

하지만 저는 표에 큰따옴표를 삽입하고 싶습니다.

삽입문에서 문자열로 이중 따옴표를 사용할 수 있습니까?쿼리가 배열에서 자동으로 생성되므로 REPLACE()를 사용하지 않습니다.

이중 따옴표는 따옴표로 묶인 식별자, 즉 영숫자 문자로만 구성되지 않은 개체 이름을 나타내는 데 사용됩니다.$그리고.#별도로 따옴표로 묶은 식별자를 사용하지 않는 것이 좋습니다.이것이 당신의 원래 ORA-00984 오류의 이유입니다.Oracle은 다음과 같이 가정하고 있습니다."tes"는 문자열이 아닌 열이며, 오류 메시지에 설명된 대로 INSERT 문의 VALUES 절에 열 이름을 사용할 수 없습니다.

문자열을 삽입하려면 "tes"테이블에 올바르게 따옴표를 붙여야 합니다.

문자 리터럴은 데이터베이스가 스키마 개체 이름과 구별할 수 있도록 단일 따옴표로 묶입니다.

모든 문자는 문자열의 일부가 될 수 있으므로 표에 큰따옴표를 삽입하려면 작은따옴표로 묶어야 합니다.

insert into users (id, name, username) 
values (null, '"tes"', '"hello"');

여기에 시연할 SQL Fiddle이 있습니다.


한 가지 더 주의할 점이 있습니다.이 쿼리는 자동으로 생성되므로 SQL 주입에 취약할 수 있습니다.SQL 주입 방지에서 바인딩 변수에 대해 읽는 것을 강력히 추천합니다.

가능하다.Oracle에서는 단일 따옴표를 사용하여 문자열 리터럴을 따옴표로 묶습니다.

삽입할 경우test당신은 그것을 데이터베이스에 인용해야 합니다.'test'.

INSERT INTO USERS (NAME) VALUES ('test');

삽입할 경우"test"당신은 그것을 데이터베이스에 인용해야 합니다.'"test"'.

INSERT INTO USERS (NAME) VALUES ('"test"');

값을 작은 따옴표로 묶습니다.

INSERT INTO USERS (ID, NAME, USERNAME) VALUES (NULL, '"tes"', '"hello"');

언급URL : https://stackoverflow.com/questions/14660666/inserting-a-string-with-double-quotes-into-a-table

반응형