SQL разделить строку с запятой на фиксированную длину - PullRequest
0 голосов
/ 27 марта 2020

У меня есть строка значений, разделенных запятыми, я загружаю эти значения в систему с максимальной длиной, которую мне необходимо соблюдать. Как только строка достигает максимальной длины, она должна переместить значения в другой столбец, но сохранить значения. Для примера ниже, мне нужно только разбить строку на два столбца.

Например, мое значение строки = val1,val2,val3,val4,val5

Максимальная длина полей вывода = 15

Вывод должен состоять из двух столбцов:

ValueList1             ValueList2
val1,val2,val3         val4,val5

Я пытаюсь завершить это с помощью T- SQL, но это не частая проблема, которую мне нужно решить, и я озадачен. Любая помощь будет принята с благодарностью.

1 Ответ

2 голосов
/ 27 марта 2020

Вы можете попробовать это.

DECLARE @stringvalue VARCHAR(5000) = 'val1,val2,val3,val4,val5'
DECLARE @MaxLengthofOutputFields INT = 15

SELECT 
    CASE WHEN LEN(@stringvalue) > @MaxLengthofOutputFields 
        THEN LEFT(@stringvalue, @MaxLengthofOutputFields - CHARINDEX(',',REVERSE(LEFT(@stringvalue,@MaxLengthofOutputFields)))) 
        ELSE @stringvalue END   , 
    CASE WHEN LEN(@stringvalue) > @MaxLengthofOutputFields THEN 
        SUBSTRING(@stringvalue, @MaxLengthofOutputFields - CHARINDEX(',',REVERSE(LEFT(@stringvalue,@MaxLengthofOutputFields))) + 2, LEN(@stringvalue)) 
        END

Результат:

-------------------- -------------
val1,val2,val3       val4,val5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...