Mysql 多个搜索条件

Mysql 多个搜索条件,mysql,Mysql,我正在使用以下查询,但我当前必须在每个参数中输入一个值,以便查询正常工作。是否有办法使参数可选,以便1个或多个值返回结果 SELECT * FROM film WHERE day LIKE '%day%' AND month LIKE '%month%' AND year LIKE '%year%' 差不多 function queryData(year,month,day) declare Y if year == nothing Y = '%' else

我正在使用以下查询,但我当前必须在每个参数中输入一个值,以便查询正常工作。是否有办法使参数可选,以便1个或多个值返回结果

SELECT * FROM film
WHERE day LIKE '%day%'
AND month LIKE '%month%'
AND year LIKE '%year%'

差不多

 function queryData(year,month,day) 

 declare Y

 if year == nothing
     Y = '%'
 else
     Y = '%' + year + '%'

 declare M

 if month == nothing
     M = '%'
 else
     M = '%' + month + '%'

 declare D

 if day == nothing
     D = '%'
 else
     D = '%' + day + '%'

 return result of :

 SELECT * FROM film
 WHERE day LIKE D
 OR month LIKE M
 OR year LIKE Y

您仍将提供所有三个参数,但不管它们是空的还是空的,匹配项仍将从非空的参数返回。

使用或代替,并更改查询逻辑。它没有使参数成为可选的。方法是不使用您未使用的参数。我不知道其他方法。

我会将每个参数的默认值设置为%,当有人填充参数时,我会传递%value%

为什么不动态创建查询? 根据您拥有的参数,动态附加过滤器

e、 g:

等等


在这种情况下,您将不会得到使用

我没有测试过的额外结果,但只要确保未使用的参数是空字符串,您的查询看起来应该可以工作。e、 g

day = ""
month = "dec"
year = "2008"
你会问:

SELECT * FROM film
WHERE day LIKE '%%'
AND month LIKE '%dec%'
AND year LIKE '%2008%'

“%%”
应该匹配任何字符串,只要它不为空。

感谢您的帮助,伙计们,我结束了以下实现。工作是一种享受

if year == nothing
   Y = ''
else
   Y = '%' + year + '%'

如果希望使用非动态查询,可以使用以下方法:

SELECT * FROM film
WHERE (:daysearch is null or day LIKE :daysearch)
AND (:monthsearch is null or month LIKE :monthsearch)
AND (:yearsearch is null or year LIKE :yearsearch)

尽管如此,我还是想知道数据库的性能是否会受到影响。

但这不会给出所需的结果。day=“01”和Month=“Jan”将为您提供1月1日、2月1日以及1月的所有日期
if year == nothing
   Y = ''
else
   Y = '%' + year + '%'
SELECT * FROM film
WHERE (:daysearch is null or day LIKE :daysearch)
AND (:monthsearch is null or month LIKE :monthsearch)
AND (:yearsearch is null or year LIKE :yearsearch)