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

SQL Server在不使用%的情况下重写查询

  •  0
  • Rilcon42  · 技术社区  · 6 年前

    我改为在代码中使用准备好的语句,其他一切都正常工作,但这一条仍然让我头疼。如何在不使用的情况下重新编写查询 % 是吗?

    错误(使用准备好的语句时在C中):

    system.data.sqlclient.sqlException:“@co”附近的语法不正确。 无法准备语句。'

    我的原始(工作)查询:

    SELECT TOP(1) [shortName] 
    FROM [xx].[dbo].[yy] 
    WHERE [AWScompanyList] LIKE '%1040%'
    

    我尝试在切换到准备好的语句后重新写入

    --Cannot use a CONTAINS or FREETEXT predicate on table or indexed view 'xx.dbo.yy' because it is not full-text indexed.
    SELECT TOP(1) [shortName] 
    FROM [xx].[dbo].[yy] 
    WHERE CONTAINS([AWScompanyList], '1040')
    
    2 回复  |  直到 6 年前
        1
  •  0
  •   Michał Turczyn    6 年前

    这个条件很容易重写为

    SELECT top(1) shortName 
    FROM xx.dbo.yy 
    where charindex(@co, AWScompanyList) > 0
    
        2
  •  1
  •   Sean Lange    6 年前

    应该这么简单。假设您添加了一个名为@co的参数。

    SELECT top(1) shortName 
    FROM xx.dbo.yy 
    where AWScompanyList like '%' + @co + '%'