2017-02-23 38 views
0

Я хочу получить подстроку из значения ячейки WRT следующие eg-подстрока запрос

Вход: «JHAmbani.School» ----------- школы

Выход: «H.Ambani» ----------------- MidName

Это текст, который находится между первой и последней точками. Длина строки или количество точек в строке может быть любой. Я пытаюсь сформировать запрос для выше входного столбца «Школа», чтобы получить выходной столбец «MidName». Каким может быть запрос sql для него?

+1

Какой движок базы данных? –

+1

Как насчет ввода, например, «a.b.c.d.e.f.school»? – GurV

ответ

0

для Oracle Database:

SELECT 
    REGEXP_REPLACE(yourColumn, '^[^.]*.|.[^.]*$', '') AS yourAlias 
FROM yourTable 
0

Если правильно понял вашу проблему ваше заявление «То есть весь текст, который идет между первым и последним точками». Ниже приведено решение вашей проблемы, как показано ниже. Ниже приведено рабочее решение в 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