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

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

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


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

поищите CLR варианты в инете, при минимальном знании C# можно и самому сделать.
...
Рейтинг: 0 / 0
STRING_SPLIT для 2008
    #40047445
ssms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо. Жаль нет стандартного решения.
...
Рейтинг: 0 / 0
STRING_SPLIT для 2008
    #40047463
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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
STRING_SPLIT для 2008
    #40047475
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
STRING_SPLIT для 2008
    #40047486
max44
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ищем iter_charlist_to_table
5.2. Список string элементов

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

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


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