sql >> データベース >  >> RDS >> Mysql

MySQLストアドプロシージャで文字列のリストを渡す方法は?

    ここのあなたの友達は私が期待するFIND_IN_SETです。私はこの質問で最初にその方法に出くわしました:この質問でもカバーされていますMYSQL-変数入力としてCommaで区切られた文字列を利用するストアドプロシージャ

    FIND_IN_SETのMySQLドキュメントはこちら http ://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_find-in-set

    したがって、手順は次のようになります

    CREATE DEFINER=`root`@`localhost` 
    PROCEDURE `search_equipment`(
        IN equip VARCHAR(100), 
        IN category VARCHAR(255)
    )
    BEGIN
        SELECT *
        FROM Equipment
        WHERE e_description LIKE CONCAT("%",equip,"%")
        AND FIND_IN_SET(e_type,category)
    END
    

    これは、カテゴリ文字列がカンマ区切りのリストであることに依存しているため、呼び出し元のコードは次のようになります

    String type = "I.T. Equipment,Office Supply";
    
    CALL search_equipment('some equipment', type);
    

    (p.s.タイプミスを修正しました。引数にcategoyと入力しました)



    1. 他のテーブルに存在しない行を選択します

    2. json_encodeが何も返さない

    3. GROUPBYおよびHAVING句を使用したoraclesqlselect構文

    4. pgAdmin4でジョブを停止するSQLコマンド