如何用sql语句解决如下问题:课程表Course和科目表Subject,要将两个表连接,Subject表的 “拆分”列 可以用'、’分成多个字符串,只要其中一个是在Course 表的neme列的子串,就应该连接。比如:Course.name Subject.拆分
管理学 管理、金融只要“管理”或“金融”至少一个是“管理学”的子串,那么就经“管理学” 和“管理、金融”对应,实现这样的sql语句怎么写呢?
管理学 管理、金融只要“管理”或“金融”至少一个是“管理学”的子串,那么就经“管理学” 和“管理、金融”对应,实现这样的sql语句怎么写呢?
select a.[科目],b.[name] from [Subject] a,[Course] b
where charindex(b.[name]+N'、',a.[拆分]+N'、')>0
(N'、'+b.[name]+N'、',N'、'+a.[拆分]+N'、') 更严谨。因为还会有'工商管理学',前后都得顾到。
select a.name b.name
from Course a ,Subject b
where Any of(split(b.拆分,‘、’)is subString of a.name
ALTER function [dbo].[f_splitstr]
(
@SourceSql varchar(8000),
@strSeprate varchar(100)
)
returns @temp table (F1 varchar(100))
as
begin
declare @ch as varchar(100)
set @SourceSql=@SourceSql+@StrSeprate
while(@SourceSql<>'')
begin
set
@ch=left(@SourceSql,Charindex(',',@SourceSql,1)-1)
insert @temp values(@ch)
set @SourceSql=stuff(@SourceSql,1,charindex(',',@SourceSql,1),'')
end
return
end
给你个例子可以看看