Как разбить строки в SQL Server - PullRequest
16 голосов
/ 08 июля 2011

У меня есть следующие данные:

Data
-----
A,10
A,20
A,30
B,23
B,45

Ожидаемый результат:

col1  Col2
----  -----
A      10
A      20
A      30
B      23
B      45

Как разделить строку для получения желаемого результата?

Ответы [ 5 ]

31 голосов
/ 08 июля 2011
SELECT substring(data, 1, CHARINDEX(',',data)-1) col1,
substring(data, CHARINDEX(',',data)+1, LEN(data)) col2
FROM table
4 голосов
/ 12 июля 2011

Я знаю, что очки уже начислены, собираюсь их опубликовать, потому что я думаю, что это немного лучше

DECLARE @t TABLE (DATA VARCHAR(20))

INSERT @t VALUES ('A,10');INSERT @t VALUES ('AB,101');INSERT @t VALUES ('ABC,1011')

SELECT LEFT(DATA, CHARINDEX(',',data) - 1) col1, 
RIGHT(DATA, LEN(DATA) - CHARINDEX(',', data)) col2
FROM @t
2 голосов
/ 08 июля 2011

если значения в столбце 1 всегда имеют длину одного символа, а значения в столбце 2 всегда равны 2, вы можете использовать функции SQL Left и SQL Right :

SELECT LEFT(data, 1) col1, RIGHT(data, 2) col2
FROM <table_name>
2 голосов
/ 08 июля 2011
declare @string nvarchar(50)
set @string='AA,12'

select substring(@string,1,(charindex(',',@string)-1) ) as col1 
, substring(@string,(charindex(',',@string)+1),len(@string) ) as col2![my sql server image which i tried.][1]
0 голосов
/ 16 марта 2016

это так просто, вы можете взять его по следующему запросу:

SELECT LEFT(DATA, CHARINDEX(',',DATA)-1) col1,RIGHT(Data,LEN(DATA)-(CHARINDEX(',',DATA))) col2 from Table
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...