我正在尝试构建一个带有一些输入参数的查询。很少有事情要注意......
NULL
?所以说你有......
IN name VARCHAR(30),
IN age VARCHAR(2),
IN address VARCHAR(50)
你只想按名字搜索......
SELECT * FROM Table WHERE
(
NAME LIKE CONCAT(name, '%')
);
这似乎不起作用,因为没有传入年龄。或者如果传入名称和地址而不是年龄怎么办?我将如何构建它?
答案 0 :(得分:1)
问题是optinal参数不能在MYSQL中使用。
解决方法是为参数传递null值,并在存储过程中使用IF语句来处理不同的情况。
看看这里:
Writing optional parameters within stored procedures in MySQL?
答案 1 :(得分:1)
作为先前的海报状态,为未使用的参数传递NULL。然后构建您的查询类似于...
SELECT * FROM Table WHERE
(
((nameParameter IS NULL) OR (NameColumn LIKE '%' + NameParameter + '%'))
AND
((ageParameter IS NULL) OR (AgeColumn = ageParameter))
AND
((addressParameter IS NULL) OR (AddressColumn = addressParameter))
)
答案 2 :(得分:0)
试试这个:
SELECT * FROM Table
WHERE name LIKE '%nametofind%';