2014-11-17 3 views
0

Мне нужна помощь в получении значения между пробелами в одном столбце. Для нижеприведенного требования мне понадобится значение после первого пробела.sql server получить значение между пробелами в одном столбце

У меня есть столбец с несколькими рядами:

original_column

Microsoft SQL Server 
Oracle DB Server 
Delete From Table Name 
SELECT as123 987 

Ожидаемый выход

Expected_Output

SQL 
DB 
From 
as123 
+1

Просьба поделиться запросом, который вы пробовали до сих пор. Для получения результата вам понадобятся функции SubString и CharIndex. – danish

+1

Найдите первое пространство, найдите следующее пространство (начальный символ после начального пространства), Подстроку из этих двух индексных точек. (CHARINDEX) –

ответ

5

Один трюк для этого типа проблемы - использовать parsename(). Я думаю, что следующий делает то, что вы хотите, предполагая, что нет периодов в названиях:

select parsename(replace(val, ' ', '.'), 2) 

Here пример.

EDIT:

Sgeddes правильный. Если вы постоянно хотите второе имя и может иметь три или четыре части, затем reverse() могут быть использованы:

select reverse(parsename(replace(reverse(val), ' ', '.'), 2)) 

(кажется, что одна из значений имеет четыре части, я первоначально прочитать его как «Удалить из TableName ".)

+1

+1, мне это нравится, но я думаю, что он должен использоваться с 'reverse': http://sqlfiddle.com/#!3/703ce/1 – sgeddes

+0

Многого можно узнать из ваших ответов –

+0

Второй предложение отлично работало. Большое спасибо. – Mitchi

0

Попробуйте это. Используйте значение Substring, Charindex and Left string function, чтобы получить значение.

select left(substring(Col,charindex(' ',Col)+1,len(Col)),charindex(' ',substring(Col,charindex(' ',Col)+1,len(Col)))) 
Смежные вопросы