小编典典

SQL Server 2008-拆分

sql

我们如何在列中使用交叉应用和拆分值?

我有一个函数dbo.split,它基于逗号将值分成单独的列

 Id         Name      Value  
1234    A     6767  
1234    A     6767,1111   
5678    A     6767  
5678    A     6767,1111  
9999    A     6767

请帮助SQL查询进行交叉申请,也请使用拆分功能

谢谢


阅读 263

收藏
2021-05-05

共1个答案

小编典典

您可以使用CROSS APPLY将拆分功能与列作为参数一起使用。

SELECT pd.contentnodeid,
       pt.name,
       s.Value
FROM   vw_abc pd
       INNER JOIN propertytype pt
         ON pd.propertytypeid = pt.id
       INNER JOIN tab t
         ON t.id = pt.tabid
       INNER JOIN contenttype ct
         ON ct.nodeid = pt.contenttypeid
       INNER JOIN propertytype pt1
         ON pt1.name = pt.name
       INNER JOIN vw_abc pd1
         ON pd1.propertytypeid = pt1.id
       CROSS APPLY dbo.split(',', pd1.datanvarchar) as s
WHERE  t.TEXT LIKE 'ANC'
       AND pd1.datanvarchar <> 'NULL'
       AND pd1.datanvarchar <> ''
       AND pd.datanvarchar LIKE '%'
       AND pd1.datanvarchar LIKE '%'
2021-05-05