У меня есть столбец базы данных в базе данных SQL Server 2008, который содержит данные VARCHAR, состоящие из четырех элементов, разделенных подчеркиванием;например:
01_1234_ABC_TESTFOO
02_2234_YES_FOO
03_77653234_NO_BAR
04_10922234_BLUE_TESTBAR
05_8372_SKY_FOOBAR
Мне нужен запрос, чтобы вернуть первые три элемента для каждогострока в виде отдельных столбцов.Мне удалось выделить первые два элемента с помощью следующего кода:
SELECT DISTINCT SUBSTRING(BarType, 1, CHARINDEX('_', BarType) - 1) as element1,
SUBSTRING(BarType,CHARINDEX('_',BarType)+1,
CHARINDEX('_', SUBSTRING(BarType,CHARINDEX('_',BarType)+1,LEN(BarType)))-1) as element2
FROM dbo.TestDataFoo
Это возвращает:
element1 element2
01 1234
02 2234
03 77653234
04 10922234
05 8372
Может ли кто-нибудь помочь мне получить третий элемент данных, пожалуйста?Мне также было бы интересно узнать о любых альтернативных методах решения этой проблемы.
См. Ниже код для генерации тестовых данных.
CREATE TABLE TestDataFoo (
id int PRIMARY KEY IDENTITY,
DateFoo datetime NOT NULL,
BarType varchar(50) NOT NULL)
INSERT INTO TestDataFoo (DateFoo, BarType)
VALUES(GetDate(), '01_1234_ABC_TESTFOO')
INSERT INTO TestDataFoo (DateFoo, BarType)
VALUES(GetDate(), '02_2234_YES_FOO')
INSERT INTO TestDataFoo (DateFoo, BarType)
VALUES(GetDate(), '03_77653234_NO_BAR')
INSERT INTO TestDataFoo (DateFoo, BarType)
VALUES(GetDate(), '04_10922234_BLUE_TESTBAR')
INSERT INTO TestDataFoo (DateFoo, BarType)
VALUES(GetDate(), '05_8372_SKY_FOOBAR')
Спасибо
Ними
Редактировать: В идеале я хотел бы достичь этого без использования функции, но любые решения приветствуются!