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

MYSQLでWHERE句として文字列を渡す方法

    これを試してください:

    SET @query = "SELECT * FROM projects WHERE ";
    
    SET @l_project_name = CONCAT("a.project_name LIKE '%", projectName, "%'");
    SET @l_project_type = CONCAT(" OR a.project_type LIKE '%", projectType, "%'");
    SET @l_project_description = CONCAT(" OR a.project_description LIKE '%", projectDescription, "%'");
    
    SET @l_full_search_clause = CONCAT(@l_project_name, @l_project_type, @l_project_description); 
    
    SET @query = CONCAT(@query, @l_full_search_clause);
    
    PREPARE stmt FROM @query;
    EXECUTE stmt;
    

    @varを使用する必要があると思います 変数の構文。また、文字列に格納されているクエリを実行するには、PREPAREを使用する必要があります およびEXECUTE

    また、UPPERを使用する必要はありません 文字列に。デフォルトでは、MySQLは大文字と小文字を区別せずに文字列を比較します。フィールドの照合タイプを確認することで、それを確認できます。 ci_ 1つは「大文字と小文字を区別しない」の略です。




    1. 列名を指定せずにAUTO_INCREMENT列を持つデータベースに新しい行を挿入するにはどうすればよいですか?

    2. 断片化が実行計画に与える影響

    3. MySQLからPandasに500万行をロード

    4. 日付に基づいて最新の5行を選択します