【问题标题】:LIKE command not working on hostLIKE 命令在主机上不起作用
【发布时间】:2017-01-05 07:27:45
【问题描述】:

我有这个问题:

SELECT * FROM Takhfif WHERE TakhfifName LIKE '%keyword%' AND CityID=2

这是一个例子。我有这段代码的动态版本。

此代码在本地运行良好,但在主机中无法运行!

我的本​​地 SQL Server 是 2014 主机 SQL Server 是 2012。

如果此代码在 SQL Server 2012 上不起作用,我应该使用什么代码进行精确搜索?

【问题讨论】:

  • 错误是什么?
  • 去掉双引号 (")。
  • 哎呀,这是c#代码!
  • 没有错误!!
  • 请详细说明它是如何不起作用的。有任何错误信息吗?

标签: asp.net sql-server sql-server-2012 sql-server-2014 sql-like


【解决方案1】:

需要考虑的事项

  1. 在列中搜索单个关键字。(Keyword1, Keyword2, Keyword3)
  2. 在列中的字符串中搜索关键字(查找此关键字 1 一句话)

试试你的关键字,周围有空格。

SELECT * FROM Takhfif WHERE TakhfifName LIKE ' %keyword% ' AND CityID=2
SELECT * FROM Takhfif WHERE TakhfifName LIKE '% keyword %' AND CityID=2

希望对你有帮助

【讨论】:

    【解决方案2】:

    这是一个例子,我有这段代码的动态版本。

    这让我觉得你在使用一个变量...我在下面解释一下

    但是,此代码在本地运行良好,但在主机上运行不正常!

    无论您在 SQL Server 2008、2012、2016 等中运行,此代码都不会提供不同的结果...

    我的本​​地sql server是2014,宿主sql server是2012

    这无关紧要,除非数据不同(未镜像/复制)

    如果此代码在 sql server 2012 上不起作用,我应该使用什么代码 精确搜索?

    您说“它不起作用”。如果您想要“精确”,那么您只使用 = 运算符...而不是 LIKE 函数。

    WHERE TakhfifName = 'keyword'
    --or if you have a variable
    WHERE TakhfifName = @keyword
    

    要么您实际上是在尝试搜索工作 keyword,但它显然不存在,或者您不确定如何在 SQL Server 中正确使用 LIKE 函数。考虑这些例子...

    declare @Takhfif table (TakhfifName varchar (64), CityID int)
    insert into @Takhfif (TakhfifName, CityID) values
    ('United States',1),
    ('China',1),
    ('Russia',1),
    ('Brazil',1),
    ('France',1),
    ('Japan',2),
    ('Morocco',2)
    
    --This query will return records where CityID = 1 and the letters ra are located anywhere in the TakhfifName
    SELECT * 
    FROM @Takhfif 
    WHERE TakhfifName LIKE '%ra%' AND CityID=1
    
    --This query will return records where CityID = 1 and the letter a is located at the END of the name
    SELECT * 
    FROM @Takhfif 
    WHERE TakhfifName LIKE '%a' AND CityID=1
    
    --This query will return records where CityID = 1 and the letter C is located at the beginning of the name
    SELECT * 
    FROM @Takhfif 
    WHERE TakhfifName LIKE 'c%' AND CityID=1
    
    -----------------------------------------------------------------------------
    --If you want to use these with a variable, you have to use concatonation
    -----------------------------------------------------------------------------
    
    declare @variable varchar(16)
    
    set @variable = 'ra'
    --This query will return records where CityID = 1 and the letters ra are located anywhere in the TakhfifName
    SELECT * 
    FROM @Takhfif 
    WHERE TakhfifName LIKE '%' + @variable + '%' AND CityID=1
    
    set @variable = '%a'
    --This query will return records where CityID = 1 and the letter a is located at the END of the name
    SELECT * 
    FROM @Takhfif 
    WHERE TakhfifName LIKE '%' + @variable AND CityID=1
    
    set @variable = 'c%'
    --This query will return records where CityID = 1 and the letter C is located at the beginning of the name
    SELECT * 
    FROM @Takhfif 
    WHERE TakhfifName LIKE @variable + '%' AND CityID=1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-13
      • 2015-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-03
      相关资源
      最近更新 更多