Mysql 多个搜索条件
我正在使用以下查询,但我当前必须在每个参数中输入一个值,以便查询正常工作。是否有办法使参数可选,以便1个或多个值返回结果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
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)