【问题标题】:Use part of a string in SQL declare statement在 SQL 声明语句中使用部分字符串
【发布时间】:2021-10-20 14:19:19
【问题描述】:

我想做一个查询,它给出的结果与下面显示的结果相同,但我只需要在 SET 语句中插入前 4 位数字,即“Set $campaignNo = '0029'”有什么办法可以在这样的字符串语句中填写通配符?

declare @campaignNo varchar(60)
set @campaignNo = '0029_old_Leu_2021_1'

Select Count(PUR1.intTimestamp) AS #start
From [MicrobialScreening].[dbo].[PUR_IDs] as ID 
INNER JOIN [MicrobialScreening].[dbo].[PUR_Purification1] AS PUR1 
   ON id.intID=pur1.intID
where id.strCampaign = @campaignNo

【问题讨论】:

  • 标记你的数据库,是microsoft sql server吗?
  • 根据数据库技术,您可以对值执行 LEFT 或 SUBSTRING 以仅解析出您需要的内容。

标签: sql sql-server declare


【解决方案1】:

也许LIKE 是你想要的:

declare @campaignNo varchar(60)
set @campaignNo = '0029'

Select Count(PUR1.intTimestamp) AS #start
From [MicrobialScreening].[dbo].[PUR_IDs] as ID 
INNER JOIN [MicrobialScreening].[dbo].[PUR_Purification1] AS PUR1 
   ON id.intID=pur1.intID
where id.strCampaign like @campaignNo+'%'

【讨论】:

    【解决方案2】:

    如果活动编号是固定宽度(如最初问题中所述的前四个),您可以使用LEFT 函数。

    set @campaignNo = '0029'

    ...

    where LEFT(id.strCampaign, 4) = @campaignNo

    更复杂的解析可以使用SUBSTRING或者LIKE。如果您使用下划线来解析 LIKE,请确保使用 ESCAPE 关键字以避免歧义。

    where id.strCampaign = LIKE CONCAT(@campaignNo, '\_%') ESCAPE '\'

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-13
      • 2012-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-08
      相关资源
      最近更新 更多