【问题标题】:How put % in stored procedure for a variable @?如何将%放入变量@的存储过程中?
【发布时间】:2016-02-24 06:30:49
【问题描述】:

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

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

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

我尝试使用'%@SO%',但不起作用。

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

谢谢

【问题讨论】:

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


    【解决方案1】:

    我猜是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】:

      试试:

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

      这只是一个普通的字符串连接。

      【讨论】:

      • 很多,当我在 vb.net 中使用代码时,我放了 & 不是加号,而是工作。非常感谢
      • 是的,好吧,T-SQL 与 VB.NET 不同;-) 请将帮助您的答案标记为已接受的答案。
      【解决方案3】:
      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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-01-06
        • 1970-01-01
        • 2015-06-23
        • 1970-01-01
        • 1970-01-01
        • 2017-01-07
        • 1970-01-01
        相关资源
        最近更新 更多