我需要从文件名字符串中提取学校名称。我把所有的学校都放在临时表中,我需要使用SchoolName的temp表列来搜索字符串。此文件名是继承的,应该是一个尝试从其中提取数据的一次性事件。
SchoolCode和SchoolName位于临时表中。如果SchoolName与临时表中的内容匹配,我也想要SchoolCode。
我尝试在WHERE子句中执行子查询,但是我得到了一个错误,它返回了多个结果。
当前数据:

期望的结果:

测试代码:
DROP TABLE #SchoolName
GO
CREATE TABLE #SchoolName (
FILENAME VARCHAR(MAX)
)
INSERT INTO #SchoolName
( FILENAME )
VALUES
('New Student added 10-02-16\High School\2015\North Side HS\JONES, JIMMY E_07-29-1993_2314687.PDF')
,('2006\South Side HIGH SCHOOL\GRADUATE\Johnson Jack B,03-19-1989,7123444.PDF')
,('2010\Riverwood\GRADUATES\Harmon, Kardon C_07-21-1991_370143.PDF')
,('2009\RockCreek\GRADUATES\Vandolay, Art E_09-23-1974_7210122.PDF')
DROP TABLE #SchoolsList
CREATE TABLE #SchoolsList (
SchoolCode VARCHAR(4)
,School varchar(500)
)
INSERT INTO #SchoolsList
(
SchoolCode
, School
)
VALUES
(1111 ,'North Side '),(1112 ,'South Side '),(1113 ,'Riverwood '),(1114 ,'RockCreek')发布于 2019-08-06 19:43:46
我想你是在找
SELECT SL.*
FROM SchoolsList SL JOIN SchoolName SN
ON SN.FileName LIKE CONCAT('%\', RTRIM(LTRIM(SL.School)), '%');
-- You can remove LTRIM() if there is no spaces in the begining发布于 2019-08-06 19:33:20
您可以使用一个like (假设您的学校列表实际上是一个不同的列表)连接到您的SchoolList表中。
SELECT l.SchoolCode, n.*
FROM #SchoolName n
LEFT OUTER JOIN #SchoolsList l
ON n.FILENAME LIKE '%' + l.School + '%'Riverwood不返回代码,因为您在学校列表中有一个空格(SS和NS工作,因为在文件名和学校列表中实际上都有一个空格)
https://stackoverflow.com/questions/57382767
复制相似问题