powered by simpleCommunicator - 2.0.52     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Разделить столбец на три столбца
6 сообщений из 6, страница 1 из 1
Разделить столбец на три столбца
    #40037150
katish444
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день всем.
Есть столбец [Name], который содержит значения 'Ba_AR/ES/G_ppm' или 'Au_Hs-FA_ppm'
Мне необходимо, чтобы у меня было три столбца со значениями к примеру 'Ba' 'AR/ES/G' 'ppm'
Сколько сижу, получилось только добиться середины скриптом
Код: sql
1.
2.
SUBSTRING([NAME], LEN(LEFT([NAME], CHARINDEX ('_', [NAME]))) + 1, LEN([NAME]) - LEN(LEFT([NAME], 
    CHARINDEX ('_', [NAME]))) - LEN(RIGHT([NAME], LEN([NAME]) - CHARINDEX ('_p', [NAME]))) - 1)Method



То есть средний столбец у меня котов. Помогите, пожалуйста с крайними



Кажется у меня кривые руки...
...
Рейтинг: 0 / 0
Разделить столбец на три столбца
    #40037152
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Разделить столбец на три столбца
    #40037158
Фотография komrad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
katish444,

еще вариант, если в тексте нет точек
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
with data as (
select 'Ba_AR/ES/G_ppm' [val] union all 
select 'Au_Hs-FA_ppm')
,data2 as (
select replace(val,'_','.') [val2] 
from data)
select 
	parsename(val2,3) [1]
	,parsename(val2,2) [2]
	,parsename(val2,1) [3]
from data2 

...
Рейтинг: 0 / 0
Разделить столбец на три столбца
    #40037199
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
katish444,

Имейте в виду, - string_split не гарантирует порядок строк в результирующем наборе.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
declare @t table (Name varchar(100));
insert into @t
values
 ( 'Ba_AR/ES/G_ppm'), ('Au_Hs-FA_ppm');

select
 t.Name,
 b.x.value('item[1]', 'varchar(100)'),
 b.x.value('item[2]', 'varchar(100)'),
 b.x.value('item[3]', 'varchar(100)')
from
 @t t cross apply
 (select cast(cast('' as xml).query('sql:column("t.Name")') as varchar(200))) a(s) cross apply
 (select cast('<item>' + replace(a.s, '_', '</item><item>') + '</item>' as xml)) b(x);
...
Рейтинг: 0 / 0
Разделить столбец на три столбца
    #40037328
Фотография HandKot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
katish444

То есть средний столбец у меня котов.

Ну если "котов", то вот еще простейший вариант (предполагается, что в строке не будет точек)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
declare @t Table(s NVarChar(100));
Insert Into @t(s) Values
(N'Ba_AR/ES/G_ppm')
, ('Au_Hs-FA_ppm');

Select 
	ParseName(t.s, 3) 
	, ParseName(t.s, 2)
	, ParseName(t.s, 1)
From 
	(Select s = Replace(s, N'_', '.') From @t t_) t




ЗЫЖ не заметил ответа komrad
...
Рейтинг: 0 / 0
Разделить столбец на три столбца
    #40037360
katish444
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
HandKot,
Всем огромнейшее спасибо!
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Разделить столбец на три столбца
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]