【问题标题】:How to write inline like operator with Variable value如何使用变量值编写内联运算符
【发布时间】:2021-08-27 00:58:50
【问题描述】:

我有以下查询,请您建议我这是什么问题,即使数据存在于表中,它也永远不会进入 IF 块内。

 DECLARE @AccountNumber NVARCHAR(50) ='54654654'

 IF Exists( Select TOP 1 1 FROM [dbo].[CheckRecords] where DetailRecord like '% ' + @AccountNumber +' %')
 BEGIN
     Print 'Hello' + @AccountNumber 
 END

【问题讨论】:

  • 你可以试试DECLARE @AccountNumber NVARCHAR(50) ='% 54654654 %'
  • 事实上我试过了,它仍然没有进入 IF Block
  • 您需要显示表格中的一些示例数据,因为逻辑是正确的...假设您的搜索被空格包围,如图所示?您可以删除 top 1,因为 exists 不需要单个记录。

标签: sql sql-server tsql sql-like


【解决方案1】:
 DECLARE @AccountNumber NVARCHAR(50) ='54654654'
 IF Exists( Select TOP 1 1 FROM [dbo].[CheckRecords] 
 where DetailRecord like '%'  + @AccountNumber +'%')
     BEGIN
         Print 'Hello ' + @AccountNumber 
     END

试试这个,它会起作用的。由于额外的空间,它无法正常工作。

【讨论】:

  • 感谢您的回复,它有效,但上面的查询需要将近 50 秒才能完成,如果有更好的方法来编写相同的逻辑,您能否建议我?
  • 替换exists,可以使用not null函数
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-11-24
  • 2019-11-06
  • 2020-07-16
  • 2016-04-17
  • 1970-01-01
  • 2019-10-27
  • 1970-01-01
相关资源
最近更新 更多