1

我在 MySQL 5.0 中使用 'like' 子句时遇到问题 我在 MySQL 5.0 中编写了一个存储过程并从我的 Java 程序调用存储过程 下面在 select 语句中的存储过程 我想为 like 子句获取参数部门名称的值请帮忙

    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 回答
-1

格式:

SELECT field1, field2,...fieldN table_name1, table_name2...
WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue'

例如:

SELECT * from tutorials_tbl 
 WHERE tutorial_author LIKE '%jay';
于 2013-04-10T13:13:00.777 回答