2016-02-24 213 views
0

我有這樣一個存儲過程:如何在變量@中將%存儲在存儲過程中?

ALTER PROCEDURE GetSoNumber (@SO varchar(255)) 
AS 
BEGIN 
    SELECT OrderNo 
    FROM Orders_Header 
    WHERE (DVMOrderNumber LIKE '%'@SO & '%') 
End 

我怎麼能對一個變量(@SO)應用在存儲過程中的SQL LIKE通配符(%)?我試過'%@SO%',但不起作用。

我想選擇部分文本並用它來搜索數據庫。

感謝

回答

4

嘗試:

ALTER PROCEDURE GetSoNumber (@SO varchar(255)) 
AS 
BEGIN 
    SELECT OrderNo 
    FROM Orders_Header 
    WHERE (DVMOrderNumber LIKE '%' + @SO + '%') 
End 

這僅僅是一個正常的字符串連接。

+0

了很多,當我在vb.net中使用代碼,我把&不加,但工作。非常感謝 – Vladut

+0

是的,好吧,T-SQL與VB.NET不一樣;-)請標記幫助你作爲接受答案的答案。 –

4

我認爲是SQL Server T-SQL?如果是這樣,使用此:

ALTER PROCEDURE GetSoNumber (@SO varchar(255)) AS 
BEGIN 
    SELECT OrderNo 
    FROM Orders_Header 
    WHERE (DVMOrderNumber LIKE '%' + @SO + '%') 
END 

在Oracle中,串聯使用 「||」,所以:

ALTER PROCEDURE GetSoNumber (@SO varchar(255)) AS 
BEGIN 
    SELECT OrderNo 
    FROM Orders_Header 
    WHERE (DVMOrderNumber LIKE '%' || @SO || '%') 
END 
0
ALTER PROCEDURE GetSoNumber (@SO varchar(255)) 
AS 
BEGIN 
    declare @varSO varchar(225)='%%' 

    if @SO is not null 
    set @varSO='%'[email protected]+'%' 

    SELECT OrderNo 
    FROM Orders_Header 
    WHERE DVMOrderNumber LIKE @varSO 

End