2011-07-01 97 views
3

MySQL的查询应该MySQL的动态搜索查询过程

1)TRUE连同逗号返回(,)从表STATION WHERE STATION_NAME分离的STATION_NAME列表是LIKE指定的INPUT购买用户。

为前:

INPUT = A, OUTPUT= (Agra,Ajmer,Amritsar,Ambala)

INPUT = AM, OUTPUT= (Amritsar, Ambala) 

2)FALSE,当没有这样的站存在

3)ERROR

详细PROCEDURE将不胜感激,因为我是MySQL的新手。 在此先感谢.. :)

回答

2

你并不需要一个过程,只是一个选择上的成功或失败没有行返回一行:

select group_concat(station_name) from station where station_name like ? 

在哪里?是用户输入的搜索的占位符。

group_concat是一个mysql特有的功能。

如果必须使用过程中,它会是这样的:

create procedure stationsearch (in likewhat varchar(255), out rslt text) 
begin 
    select group_concat(distinct station_name order by station_name) into rslt from station where station_name like likewhat; 
end 

像这样来使用:

call stationsearch('Am%',@rslt); 
select @rslt; 
+0

感谢响应。 group_concat正在工作,请记住性能和优化,我们需要在后端编写过程(在MySQL中)。但在MySQL proc的地方持有人?不管用。 – Sun19

+0

错误,一个程序将无助于性能和优化。 – ysth

+0

好吧..可以...仍然..我想知道关于MySQL中的动态查询.. – Sun19

0
SELECT station_name 
FROM station 
WHERE SUBSTRING(station_name, 1, LENGTH(?)) = ?;