[英]SQL/PHP how to write WHERE which returns everything
我有一个PHP函数,该函数使用WHERE排序过程从SQL数据库中选择影片:
drop procedure if exists editFilm;
DELIMITER $$
CREATE PROCEDURE editFilm(
IN inFilmId int,
)
BEGIN
SELECT * from Film where FilmId = inFilmId
END $$
DELIMITER ;
现在,我希望可以设置“所有内容”,以便所有数据都得到答复,就像WHERE不存在一样。
我尝试使用*,%并将其留空,但是这些都不起作用。
我该如何在哪里提供可以返回所有内容的值?
将查询更改为使用LIKE
而不是=
。 如果参数不包含任何通配符,则SQL会将其视为=
。 但是,如果要匹配所有内容,则可以使用通配符'%'
。
如果要执行常规的相等性测试,请确保在为过程提供参数时,使用\\
转义通配符。 在LIKE
模式中, %
和_
是通配符。
SELECT * from Film
WHERE FilmId = inFilmId
OR inFilmId IS NULL
;
或者,如果您还想在一个空字符串上全部匹配 :
SELECT * from Film
WHERE FilmId = inFilmId
OR COALESCE(inFilmId, '') = ''
;
但是,如果您的inFilmId是整数,则可以发明另一个特殊值
SELECT * from Film
WHERE FilmId = inFilmId
OR COALESCE(inFilmId, -666) = -666
;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.