繁体   English   中英

SQL串联查询

[英]SQL Concatenation Query

我有一列称为I_Tags ,我试图将其与另一个表Asset_Tags进行比较。

I_Tags具有类似

PV-B02-0115
B04-PV-7126B--
B05-PV0841A--
B05-PV-0841B--
B09-PV-1155A--

Asset_Tag的字段如下

PV-B04-6888
PV-B05-0841A--
PV-B05-1219
PV-B09-1155A--

不知道如何根据以下方案编写case语句:

  1. 如果I_Tag中的前两个字符是字母PV,则将整个字符串与Asset_Tags进行匹配
  2. 如果不是,并且PV是I_Tag第4个和第5个字符,请将其移动到第1个和第2个字符位置,并删除末尾的任意/所有破折号(-)并与Asset_Tags匹配。

我从未在SQL中编写过case语句,所以不确定如何为此编写查询。

任何帮助,将不胜感激。 谢谢

如果返回结果,使PV始终位于开头并删除结尾的-s,则可能会有所帮助:

select
  case 
    when I_Tags like 'PV%' then I_Tags
    when I_Tags like '____PV%' then
      'PV-'+left(I_Tags, 3) + 
      substring(I_Tags, 7, len(I_Tags) -5 -patindex('%[^-]%', reverse(I_Tags)))
    end as test
from
  table1

您可以在SQL Fiddle中对其进行测试: http ://sqlfiddle.com/#!6/526db/16

不知道您的示例中是否有B05-PV0841A--的错字,但它没有-。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM