如何在存储过程中为变量@设置%?

时间:2016-02-24 06:30:50

标签: sql-server vb.net stored-procedures

我有一个这样的存储过程:

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

如何在存储过程中的变量(LIKE)上应用SQL %通配符(@SO)?

我尝试使用'%@SO%',但无法正常工作。

我想选择部分文本并用它来搜索数据库。

由于

3 个答案:

答案 0 :(得分:4)

尝试:

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

这只是一个正常的字符串连接。

答案 1 :(得分: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

答案 2 :(得分:0)

ALTER PROCEDURE GetSoNumber (@SO varchar(255))
AS
BEGIN
   declare @varSO varchar(225)='%%'

   if  @SO is not null
     set @varSO='%'+@SO+'%' 

   SELECT OrderNo
   FROM Orders_Header
   WHERE DVMOrderNumber LIKE @varSO

End