How to pass a variable to a IN clause?

前端 未结 4 1822
灰色年华
灰色年华 2020-11-30 07:28

Lets say I have a SP that has a SELECT statements as follows,

SELECT product_id, product_price FROM product 
WHERE product_type IN (\'AA\',\'BB\         


        
相关标签:
4条回答
  • 2020-11-30 07:48

    Pass parameter value like this - 'AA,BB,CC'. Then, it is enough to use FIND_IN_SET function -

    SELECT product_id, product_price
    FROM product
    WHERE FIND_IN_SET(product_type, param);
    
    0 讨论(0)
  • 2020-11-30 07:50

    Try using a prepared statement: http://dev.mysql.com/doc/refman/5.5/en/sql-syntax-prepared-statements.html

    0 讨论(0)
  • 2020-11-30 07:53

    passing a string using a variable was a problem assume this solution

    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
    

    Calling the procedure from other query window

    call `spTestListValues`('4,5,3'); --no paramter currently for test
    

    output

    ID Description
    NUll 
    1   TEST1 
    4   TEST2
    5   TEST3
    
    0 讨论(0)
  • 2020-11-30 07:57

    create a user-defined function that will convert the comma separated value into table, and by join this two can get the desired result.

    for more

    0 讨论(0)
提交回复
热议问题