Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

앰퍼샌드(&)가 포함된 쿼리가 Oracle에서는 작동하지만 MySQL에서는 작동하지 않는 이유와 해결 방법

Oracle에서는 앰퍼샌드(&)를 사용한 변수 치환이 기본적으로 지원되지만, MySQL에서는 이 방식이 작동하지 않습니다. MySQL에서 동일한 기능을 구현하려면 @ 기호를 사용한 사용자 정의 변수를 활용해야 합니다.

MySQL에서 @ 변수를 사용하는 방법

MySQL에서는 SET 문으로 변수에 값을 할당한 후, 해당 변수를 INSERT 문에 그대로 사용할 수 있습니다. 기본 구문은 다음과 같습니다.

SET @yourVariableName1 = yourValue, @yourVariableName2 = yourValue, @yourVariableName3 = yourValue, .........N;
insert into yourTableName values(@yourVariableName1, @yourVariableName2, @yourVariableName3, ........N);

예제 테이블 생성

위 구문을 실제로 이해하기 위해 먼저 테이블을 생성해 보겠습니다. 테이블 생성 쿼리는 다음과 같습니다.

mysql> create table Student_Information
    -> (
    -> StudentId int,
    -> StudentName varchar(100),
    -> StudentAge int,
    -> StudentMarks int,
    -> StudentCountryName varchar(10)
    -> );
Query OK, 0 rows affected (0.75 sec)

@ 변수를 사용한 데이터 삽입

이제 각 값 앞에 @를 붙여 변수를 설정하고, INSERT 명령으로 레코드를 삽입해 보겠습니다.

mysql> SET @Id = 10001, @Name = 'Carol', @Age = 23, @Marks = 89, @CountryName = 'US';
Query OK, 0 rows affected (0.00 sec)
mysql> insert into Student_Information values(@Id, @Name, @Age, @Marks, @CountryName);
Query OK, 1 row affected (0.19 sec)

결과 확인

SELECT 문을 사용하여 테이블의 모든 레코드를 조회할 수 있습니다.

mysql> select * from Student_Information;

실행 결과는 다음과 같습니다.

+-----------+-------------+------------+--------------+--------------------+
| StudentId | StudentName | StudentAge | StudentMarks | StudentCountryName |
+-----------+-------------+------------+--------------+--------------------+
| 10001     | Carol       | 23         | 89           | US                 |
+-----------+-------------+------------+--------------+--------------------+
1 row in set (0.00 sec)

정리

Oracle은 SQL*Plus 환경에서 & 치환 변수를 지원하지만, MySQL에는 이러한 기능이 없습니다. 대신 MySQL의 사용자 정의 변수(@변수명)를 사용하면 동일하게 값을 저장하고 재사용할 수 있습니다. 이 방식은 세션 내에서 유효하며, 복잡한 쿼리에서 값을 반복해서 사용할 때 특히 유용합니다.