2011-07-01 139 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(?)) = ?;