2013-10-11 4 views
-2

У меня есть таблица, как показано нижеКак разбить строку на две колонки

Property Value 

Adapter [00000007] Intel(R) 82567LM Gigabit Network Connection 
Adapter [00000009] VMware Virtual Ethernet Adapter for VMnet1 
Adapter [00000012] Dell Wireless 1397 WLAN Mini-Card 

из приведенной выше таблицы я хочу разделить строковые значения столбца в два столбца, как ниже:

String1  String2 
[00000007]  Intel(R) 82567LM Gigabit Network Connection 
[00000009]  VMware Virtual Ethernet Adapter for VMnet1 

Любое решение, пожалуйста, ,

+0

Значит, вы не хотите разделять пробелы? В противном случае они будут разделены: «Intel (R) 82567LM' и т. Д. Так что же такое точное правило? –

+0

Вы просто полностью изменили вопрос! – Avitus

+0

Я хочу разбить на основе ']' – Indra

ответ

0
select 
    substring(Value,charindex('[',Value,1),charindex(']',value,charindex('[',Value,1)-1)) as String1 
    ,ltrim(rtrim(substring(Value,charindex(']',value)+1,len(value)))) as String2 
from Table1 

SQL Fiddle

0

Поскольку вопрос не изменилось, это уже не актуально, но может оказаться полезным для других ...

Это похоже на работу:

declare @value varchar(100) = '[00000007] Intel(R) 82567LM Gigabit Network Connection' 

SELECT 
SUBSTRING(@value, 0, CHARINDEX(']', @value,0) + 1) firstPart, 
LTRIM(RTRIM(SUBSTRING(@value, CHARINDEX(']', @value,0)+1, LEN(@value)))) secondPart 
+0

Кажется, я все еще получаю правильное значение для того, что вы предложили. Вы уверены, что это не удается? Я уверен, что он все еще работает и производит вывод из двух столбцов с правильными значениями, но я могу ошибаться. – Ric

+0

С нарисованным, потому что человек, разместивший комментарий, просто изменил вопрос – Avitus

+0

Я видел его, но все равно уверен, что мой бы сработал основанный на его первой версии вопроса. хорошо. – Ric

0

Если ваш случай простой, он будет работать:

select 
    Property, 
    substring(Value, 2, 8) as String1, 
    -- or substring(Value, 1, 10) if you want [ and ] 
    right(Value, len(Value) - 11) as String2 
from Table1 

sql fiddle demo

0

Это немного более общий вариант поддержки для любого числа символов до первого пробела (Fiddle demo):

SELECT LEFT(@S, CHARINDEX(' ',@S)) String1, 
     RIGHT (@S, LEN(@S) - CHARINDEX(' ',@S)) String2 

Применив к вашей таблице :

SELECT LEFT(Value, CHARINDEX(' ',Value)) String1, 
     RIGHT (Value, LEN(Value) - CHARINDEX(' ',Value)) String2 
FROM yourTable 
Смежные вопросы