Sql 子串查询
我想从下面的单元格值wrt中得到子字符串- 输入:J.H.Ambani.School----学校 输出:H.Ambani-----------MidName 这就是第一个点和最后一个点之间的所有文本。字符串的长度或字符串中的点数可以是任意的。我正在尝试对上面的输入列School进行查询,以获取输出列的MidName。它的sql查询是什么?对于Oracle数据库:Sql 子串查询,sql,substring,Sql,Substring,我想从下面的单元格值wrt中得到子字符串- 输入:J.H.Ambani.School----学校 输出:H.Ambani-----------MidName 这就是第一个点和最后一个点之间的所有文本。字符串的长度或字符串中的点数可以是任意的。我正在尝试对上面的输入列School进行查询,以获取输出列的MidName。它的sql查询是什么?对于Oracle数据库: SELECT REGEXP_REPLACE(yourColumn, '^[^.]*.|.[^.]*$', '') AS you
SELECT
REGEXP_REPLACE(yourColumn, '^[^.]*.|.[^.]*$', '') AS yourAlias
FROM yourTable
如果你的陈述正确理解了你的问题 这就是第一个点和最后一个点之间的所有文本。下面是您的问题的解决方案,如下所示。下面是SQL SERVER中的工作解决方案,对于其他数据库,由于时间不足,我无法检查 @SourceString:这是您的输入 @DestinationString:这是您的输出
declare @SourceString varchar(100)='J.H.Ambani.School'
declare @DestinationString varchar(100)
;with result as
(
select ROW_NUMBER()over (order by (select 100))SNO,d from(
select t.c.value('.','varchar(100)')as d from
(select cast('<a>'+replace(@SourceString,'.','</a><a>')+'</a>' as xml)data)as A cross apply data.nodes('/a') as t(c))B
)
select @DestinationString=COALESCE(@DestinationString+'.','')+ISNULL(d,'') from result where SNO>(select top 1 SNO from result order by SNO)
and SNO<(select top 1 SNO from result order by SNO desc)
select @DestinationString
哪个数据库引擎?输入如“a.b.c.d.e.f.school”如何?