1

MySQL 5.0 で「like」句を使用すると問題が発生します。MySQL 5.0 でストアド プロシージャを作成し、Java プログラムからストアド プロシージャを呼び出します。select ステートメントで以下のストアド プロシージャを呼び出します。like 句のパラメータ departmentname の値を取得します。これを手伝ってください

    DROP PROCEDURE IF EXISTS upSelTests;
    DELIMITER //
    CREATE PROCEDURE upSelTests
    (
    IN departmentname varchar(50),
    IN testDateFrom varchar(10),
    IN testDateTo varchar(10)
    )
    BEGIN
    declare testDateFrom1 varchar(30);
    select PatientID,LabNo,arriveddate,RecieptNo,patientname,referredby,ID from
    tblAcceptTest where STR_TO_DATE(arriveddate, '%d/%m/%Y')>=STR_TO_DATE(testDateFrom,
    '%d/%m/%Y') and STR_TO_DATE(arriveddate, '%d/%m/%Y') <= STR_TO_DATE(testDateTo, 
    '%d/%m/%Y') and Status = 0 and DeptName like '%departmentname%';
    END //
    DELIMITER ;
4

2 に答える 2

0

引用符で囲むdepartmentnameと、文字リテラルになり、変数ではなくなります。その値は無視され、'%departmentname%'代わりにリテラルが使用されます。

最も簡単な解決策は、次のようにプレフィックスとサフィックスとしてCONCAT追加することです。'%'

and DeptName LIKE CONCAT( '%', departmentname, '%')

たとえば、departmentnameが に設定されているpolice場合、結果は次のようになります。

and DeptName LIKE '%police%'
于 2013-04-10T13:10:45.247 に答える