programing

IN 절에 변수를 전달하는 방법?

lastmoon 2023. 9. 14. 23:26
반응형

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

반응형