Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 从具有CSV值的一行中选择子查询中的位置_Sql Server - Fatal编程技术网

Sql server 从具有CSV值的一行中选择子查询中的位置

Sql server 从具有CSV值的一行中选择子查询中的位置,sql-server,Sql Server,我正在尝试执行一个子查询,其中返回的值是要用于SELECT where IN子句的CSV值列表 SELECT * FROM Facility.FacilityIO f where f.FacilityID in ( select Facilities from FacilityListView where FacilityID = 'PSY35' ) FacilityListView如下所示: FacilityID Facilities SOL1 SOL1, PSY

我正在尝试执行一个子查询,其中返回的值是要用于SELECT where IN子句的CSV值列表

SELECT *
FROM Facility.FacilityIO f
where f.FacilityID in (
  select Facilities
  from FacilityListView
  where FacilityID = 'PSY35'
)
FacilityListView如下所示:

FacilityID  Facilities
SOL1        SOL1,
PSY35       PSY3,PSY5
SOL1W       SOL1,WSR1,

由于SQL server正在查找数据集而不是单个值,因此我得到了0个结果,但我不知道如何告诉SQL server选择f.FacilityID的位置('PSY3','PSY5')

加入表并使用LIKE运算符:

SELECT f.* 
FROM Facility.FacilityIO f INNER JOIN FacilityListView v
ON ',' + v.Facilities + ',' LIKE '%,' + f.FacilityID + ',%'
WHERE v.FacilityID = 'PSY35'

理想情况下,您应该在此处修复数据,而不是存储分隔数据。修复数据。从长远来看,这只会让你头疼。我认为这是可行的,但有些设施是PSY1或PSY10,因此不起作用。是的,这会起作用,因为我在每个值之前和之后连接逗号。因此,此代码比较
、PSY1、
、PSY10、
如果设施总是以逗号结尾,则可以将ON子句更改为:
ON'、'+v.设施,如“%”、“+f.FacilityID+”、%'