반응형
IN 절에 변수를 전달하는 방법?
예를 들어 제가 SP를 가지고 있다고 가정해 보겠습니다.SELECT
다음과 같은 진술.
SELECT product_id, product_price FROM product
WHERE product_type IN ('AA','BB','CC');
하지만 데이터는 거기로 갑니다.IN
절은 값 문자열을 포함하는 단일 변수를 통과해야 합니다.아래 링크
SELECT product_id, product_price FROM product
WHERE product_type IN (input_variables);
하지만 그런 식으로는 작동하지 않습니다.어떻게 하는지 아세요?
매개변수 값을 이와 같이 전달 -'AA,BB,CC'
. 그러면 FIND_를 사용하면 충분합니다.IN_SET 함수 -
SELECT product_id, product_price
FROM product
WHERE FIND_IN_SET(product_type, param);
쉼표로 구분된 값을 테이블로 변환할 사용자 정의 함수를 만들고, 이 둘을 결합하면 원하는 결과를 얻을 수 있습니다.
변수를 사용하여 문자열을 전달하는 것이 문제였다고 가정합니다.
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `spTestListValues`(_list varchar(200))
BEGIN
SET @LIST=_list; -- assume this a paramter from the stored procedure
SELECT NULL AS Id, '' AS Description --insert null value to be used for list box population
UNION
(SELECT id, Description
FROM test_table
WHERE FIND_IN_SET(id,@LIST) ORDER BY Description ASC) ;
END
다른 쿼리 창에서 프로시저 호출
call `spTestListValues`('4,5,3'); --no paramter currently for test
산출량
ID Description
NUll
1 TEST1
4 TEST2
5 TEST3
준비된 문을 사용해 봅니다.
https://dev.mysql.com/doc/refman/8.0/en/sql-prepared-statements.html
언급URL : https://stackoverflow.com/questions/13116042/how-to-pass-a-variable-to-a-in-clause
반응형
'programing' 카테고리의 다른 글
panda .at vs .loc (0) | 2023.09.14 |
---|---|
2개의 WordPress에서 사용자 공유하기 동일한 서버의 2개 하위 도메인에 설치 (0) | 2023.09.14 |
MariaDB 권한 문제 - [Warning] 사용자 'rphsp'@'raspberrypi.lan'에 대한 액세스가 거부되었습니다. (0) | 2023.09.14 |
Oracle - 리터럴이 형식 문자열 오류와 일치하지 않습니다. (0) | 2023.09.14 |
다른 테이블에 의한 MySQL 사용자 지정 주문 (0) | 2023.09.14 |