Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / STRING_SPLIT для 2008 / 8 сообщений из 8, страница 1 из 1
20.02.2021, 10:02
    #40047436
ssms
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
STRING_SPLIT для 2008
Доброе утро.

Подскажите пожалуйста, как разбить строку по символу разделителю и получить например 10-е значение?

Аналог STRING_SPLIT нуден.


Но STRING_SPLIT появился намного позднее 2008-го в sql server (
...
Рейтинг: 0 / 0
20.02.2021, 10:08
    #40047437
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
STRING_SPLIT для 2008
Ну рекурсивный CTE никто ж не отменил... откусывайте по одному фрагменту, пока остаток не станет пустым... ну и, само собой, сохраняйте номер фрагмента.
...
Рейтинг: 0 / 0
20.02.2021, 10:12
    #40047439
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
STRING_SPLIT для 2008
ssms,

поищите CLR варианты в инете, при минимальном знании C# можно и самому сделать.
...
Рейтинг: 0 / 0
20.02.2021, 10:23
    #40047445
ssms
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
STRING_SPLIT для 2008
Спасибо. Жаль нет стандартного решения.
...
Рейтинг: 0 / 0
20.02.2021, 11:10
    #40047463
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
STRING_SPLIT для 2008
ssms
Спасибо. Жаль нет стандартного решения.

Если просто чтобы работало, забив на производительность:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

-- Разворачивает строку, разделенную @separator в столбец
CREATE function [dbo].[fnSplitString] 
(
    @str nvarchar(max), 
    @separator char(1)
)
returns table
AS
return (
with tokens(p, a, b) AS (
    select 
        cast(1 as bigint), 
        cast(1 as bigint), 
        charindex(@separator, @str)
    union all
    select
        p + 1, 
        b + 1, 
        charindex(@separator, @str, b + 1)
    from tokens
    where b > 0
)
select
    p-1 ItemIndex,
    substring(
        @str, 
        a, 
        case when b > 0 then b-a ELSE LEN(@str) end) 
    AS Item
from tokens
);

GO
...
Рейтинг: 0 / 0
20.02.2021, 11:52
    #40047475
iap
iap
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
STRING_SPLIT для 2008
...
Рейтинг: 0 / 0
20.02.2021, 12:25
    #40047486
max44
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
STRING_SPLIT для 2008
ищем iter_charlist_to_table
5.2. Список string элементов

https://www.sql.ru/articles/mssql/03060701arraysandlistsinsqlserver.shtml#tblnum
...
Рейтинг: 0 / 0
20.02.2021, 16:12
    #40047540
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
STRING_SPLIT для 2008
ssms,

использование CLR функций для обработки строк как раз и является "стандартным решением", если нет встроенных функций аналогичного назначения.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / STRING_SPLIT для 2008 / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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