首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TSQL:基于temp表中的列查找字符串的一部分

TSQL:基于temp表中的列查找字符串的一部分
EN

Stack Overflow用户
提问于 2019-08-06 19:26:32
回答 2查看 128关注 0票数 0

我需要从文件名字符串中提取学校名称。我把所有的学校都放在临时表中,我需要使用SchoolName的temp表列来搜索字符串。此文件名是继承的,应该是一个尝试从其中提取数据的一次性事件。

SchoolCode和SchoolName位于临时表中。如果SchoolName与临时表中的内容匹配,我也想要SchoolCode。

我尝试在WHERE子句中执行子查询,但是我得到了一个错误,它返回了多个结果。

当前数据:

期望的结果:

测试代码:

代码语言:javascript
复制
 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')
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-06 19:43:46

我想你是在找

代码语言:javascript
复制
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

演示

票数 1
EN

Stack Overflow用户

发布于 2019-08-06 19:33:20

您可以使用一个like (假设您的学校列表实际上是一个不同的列表)连接到您的SchoolList表中。

代码语言:javascript
复制
 SELECT l.SchoolCode, n.*
 FROM #SchoolName n
 LEFT OUTER JOIN #SchoolsList l
    ON n.FILENAME LIKE '%' + l.School + '%'

Riverwood不返回代码,因为您在学校列表中有一个空格(SS和NS工作,因为在文件名和学校列表中实际上都有一个空格)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57382767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档