• Home
  • blog
  • photos
  • projects
  • about
Menu
  • Home
  • blog
  • photos
  • projects
  • about
July 3, 2009

MS SQL Function Split

Вариант реализации функции Split, которая разрезает строку на мини-таблицу, по умолчанию в качестве разделителя используется пробел.

CREATE FUNCTION [dbo].[fn_Split](
@text nvarchar(MAX),
@delimiter CHAR(1) = ' '
)
RETURNS @Strings TABLE
(
position int IDENTITY PRIMARY KEY,
VALUE nvarchar(MAX)
)
AS
BEGIN
DECLARE @INDEX int
    SET @INDEX = -1
WHILE (LEN(@text) > 0)
BEGIN
        SET @INDEX = CHARINDEX(@delimiter , @text)
        IF (@INDEX = 0) AND (LEN(@text) > 0)
BEGIN
INSERT INTO @Strings VALUES (@text)
BREAK
END
        IF (@INDEX > 1)
BEGIN
INSERT INTO @Strings VALUES (LEFT(@text, @INDEX - 1))
 SET @text = RIGHT(@text, (LEN(@text) - @INDEX))
END
ELSE
SET @text = RIGHT(@text, (LEN(@text) - @INDEX))
END
    RETURN
END

Пример:

SELECT * FROM [dbo].[fn_Split] (
    'hello;world;split'
    ,';'
)

Результат:

positionVALUE
11hello
22world
33split
Разработка
/
ms sql,sql
/
July 3, 2009
/
No Comment
Previous MikroTik – Начальная настройка Next MikroTik – Списки и группы адресов

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Notepads

  • Админево
  • Разработка
  • Фотография
  • Электроника
  • Разное
Menu
  • Админево
  • Разработка
  • Фотография
  • Электроника
  • Разное

Tags

Tags
antiquities (6) aquarium (1) csharp (1) dos (6) hardware (1) howto (16) linux (1) mikrotik (14) ms sql (2) netflow (1) norton commander (2) powershell (1) router os (14) sql (2) virtualbox (6) windows (2) wsus (2) мудрость (1)

Links

  •   i’m on facebook
  •   my photos on flickr
  •   my code on github
  •   write me email
  •   headhunt me
Menu
  •   i’m on facebook
  •   my photos on flickr
  •   my code on github
  •   write me email
  •   headhunt me
Яндекс.Метрика

Sergey Lagovskiy © 2009-2021 Οδύσσεια 0.6