SQL SEPARETE для SP - PullRequest
       1

SQL SEPARETE для SP

0 голосов
/ 08 октября 2019

ОБ: ПРОЦЕДУРА ХРАНЕНИЯ СТУДИИ SQL УПРАВЛЕНИЯ

Следующие переменные '|'Я хочу отделить это от. Как я могу это сделать.

'628391|28100|8304|3|1201129|12|Kg|M01|SERIOUSLY CHUNKY WOOL' 
'627452|70462|618|60|100059|72|Ad|M01|THICK & QUICK STRIPES'
'617213|99233|89|10|18754|12|Kg|M01|FASHION KC ARAN 400'

Ответы [ 3 ]

0 голосов
/ 08 октября 2019

Вы можете использовать следующий запрос

 DECLARE @PL AS VARCHAR(MAX)='628391|28100|8304|3|1201129|12|Kg|M01|SERIOUSLY CHUNKY WOOL' 


  SELECT value FROM string_split(@PL,'|')


+-----------------------+
|         value         |
+-----------------------+
| 628391                |
| 28100                 |
| 8304                  |
| 3                     |
| 1201129               |
| 12                    |
| Kg                    |
| M01                   |
| SERIOUSLY CHUNKY WOOL |
+-----------------------+

РЕДАКТИРОВАТЬ

DROP TABLE IF EXISTS TestStrList
DECLARE  @query  AS NVARCHAR(MAX) 
DECLARE @PL AS VARCHAR(MAX)='628391|28100|8304|3|1201129|12|Kg|M01|SERIOUSLY CHUNKY WOOL' 
DECLARE @cOL AS VARCHAR(MAX)

SELECT value INTO 
TestStrList FROM string_split(@PL,'|')



select @cOL = STUFF((SELECT ',' + QUOTENAME(value) 
                    FROM TestStrList
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = N'SELECT ' + @cOL + N' from 
             (
                select  value
                from TestStrList
            ) x
            pivot 
            (
                max(value)
                for value in (' + @cOL + N')
            ) p '



exec sp_executesql @query;



+--------+-------+------+---+---------+----+----+-----+-----------------------+
| 628391 | 28100 | 8304 | 3 | 1201129 | 12 | Kg | M01 | SERIOUSLY CHUNKY WOOL |
+--------+-------+------+---+---------+----+----+-----+-----------------------+
| 628391 | 28100 | 8304 | 3 | 1201129 | 12 | Kg | M01 | SERIOUSLY CHUNKY WOOL |
+--------+-------+------+---+---------+----+----+-----+-----------------------+
0 голосов
/ 08 октября 2019

Хочу, чтобы он написал отдельный столбец?

0 голосов
/ 08 октября 2019

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

DECLARE @text VARCHAR(200) = '617213|99233|89|10|18754|12|Kg|M01|FASHION KC ARAN 400'

WHILE 1 = 1
BEGIN
    DECLARE @index INT = CHARINDEX('|', @text, 1)

    IF @index = 0
        RETURN

    SELECT LEFT(@text, @index - 1)
    SET @text = SUBSTRING(@text, @index + 1, LEN(@text) - @index)
END

По сути, код, использующий CHARINDEX, пытается выяснитьИндекс первой трубы (слева) в тексте. После нахождения индекса он применяет SUBSTRING для получения точного текста.

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