Преобразовать строку SQL в список символов - PullRequest
1 голос
/ 16 ноября 2010

В хранимой процедуре, которую я пишу, мне нужно преобразовать строку (например, 'ABCD') в список ее компонентов (например, ('A','B','C','D')). Есть ли простой способ сделать это?

(Использование T-SQL в SQL Server 2008.)

Ответы [ 3 ]

3 голосов
/ 16 ноября 2010
DECLARE @Str varchar(100)
DECLARE @StrT varchar(100)

SET @Str = 'ABCDEFG'

WHILE LEN(@Str) > 0
 BEGIN
 SET @StrT = LEFT(@Str, 1)
 RAISERROR (@StrT, 0, 0) WITH NOWAIT
 SELECT @Str = RIGHT(@Str, (LEN(@STR) - 1))
 END

Вы можете изменить это при необходимости.Вы на самом деле не указали, что вам нужно делать с буквами, поэтому просто выводите их на консоль сообщений.

2 голосов
/ 16 ноября 2010
DECLARE @MyString varchar(100)
SET @MyString = 'ABCD'

WHILE LEN(@MyString) > 0 
 BEGIN
 SELECT LEFT(@MyString, 1)
 SET @MyString = RIGHT(@MyString, (LEN(@MyString) - 1))
END

Это работает в SQL Server 2008.

1 голос
/ 21 октября 2014

Построение ответа JNK :

DECLARE @start nvarchar(MAX);
DECLARE @output nvarchar(MAX);

SELECT @start = 'ABCDEFG', @output = '';

WHILE LEN(@start) > 0
    BEGIN
        SET @output = @output + '''' + LEFT(@start, 1) + ''',';
        SELECT @start = RIGHT(@start, (LEN(@start) - 1))
    END

SELECT CASE WHEN LEN(@output) > 0 THEN LEFT(@output, (LEN(@output) - 1)) ELSE NULL END;

Это даст вам желаемое форматирование.

Лично я предпочитаю следующее, так как работать легчес табличными данными:

DECLARE @start nvarchar(MAX);
DECLARE @output TABLE (value nchar(1));

SET @start = 'ABCDEFG'+NCHAR(1121);

WHILE LEN(@start) > 0
    BEGIN
        INSERT INTO @output (value) VALUES (LEFT(@start, 1));
        SELECT @start = RIGHT(@start, (LEN(@start) - 1))
    END

SELECT value, CAST(value AS varbinary(4)) AS hex FROM @output;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...