代码之家  ›  专栏  ›  技术社区  ›  hgulyan

在sp\u executesql中使用LIKE

  •  6
  • hgulyan  · 技术社区  · 14 年前

    这里有什么问题吗?在生成where条件之后,我用 sp_executesql

    如何在sp\u executesql中使用LIKE?你能举一些例子吗?

    非常感谢。

    declare @name nvarchar(50)
    
    set @name = 'a'
    
    SELECT *
        FROM Tbl_Persons WHERE 1 = 1  AND lastname LIKE '%a%' 
    
    exec sp_executesql 
      N'SELECT *
        FROM Tbl_Persons WHERE 1 = 1  AND lastname LIKE ''%@name%''', 
      N'@name nvarchar(50)',
      @name=@name
    

    第一个查询返回值,第二个查询不返回任何值。

    有什么区别?

    1 回复  |  直到 14 年前
        1
  •  18
  •   Martin Smith    14 年前

    以下是我的作品

    declare @name varchar(50)
    
    set @name = 'WAITFOR'
    
    
    exec sp_executesql 
      N'select * from sys.messages WHERE text  LIKE ''%'' + @name + ''%''', 
      N'@name varchar(50)',
      @name=@name
    

    exec sp_executesql 
      N'SET @name = ''%'' + @name + ''%'';
        SELECT *
        FROM Tbl_Persons WHERE 1 = 1  AND lastname LIKE @name', 
      N'@name nvarchar(50)',
      @name=@name
    

    目前,您正在搜索包含实际子字符串的文本 @name