Разделите строку на основе символов и количества в SQL Server [дубликат]

Если вы используете Unity, вам не нужно изменять это в Xcode, вы можете применить флаг компиляции в метаданных для определенных файлов (файлов), прямо внутри Unity. Просто выберите их на панели «Проект» и примените с панели «Инспектор». Это важно, если вы планируете использовать Cloud Build.

-1
задан marc_s 16 January 2019 в 05:13
поделиться

1 ответ

нет необходимости во временной таблице, вы можете сделать это за один прогон.

см. Этот пример:

DECLARE 
    @tb TABLE (data1 VARCHAR(500) ) 

INSERT INTO @tb VALUES 
('Delta,Charlie'),
('Delta,Bravo'),
('Bravo,Charlie'),
('Tango,Bravo'),
('Alpha')

SELECT data1, COUNT(*) total
FROM (
SELECT LTRIM(RTRIM(m.n.value('.[1]','varchar(8000)'))) data1
FROM (
    SELECT CAST('<XMLRoot><RowData>' + REPLACE(data1,',','</RowData><RowData>') + '</RowData></XMLRoot>' AS XML) split
    FROM @tb
) D
CROSS APPLY split.nodes('/XMLRoot/RowData')m(n)
) D 
GROUP BY data1

Подробнее Объяснение (по запросу scsimon)

Приведенный выше метод является одним из подходов, который разбивает строки с использованием XML , По сути, мы заменили запятые в реальных данных тегами XML </RowData><RowData>, которые определяют каждое разделение, а затем сопоставили их с другими тегами XML <XMLRoot><RowData></RowData></XMLRoot>, которые определяют каждую строку.

Итак, если мы получим первую строку, например, Delta,Charlie, она будет преобразована в:

<XMLRoot>
    <RowData>Delta</RowData>
    <RowData>Charlie</RowData>
</XMLRoot>  

, если вы знаете, как работает структура XML, или, по крайней мере, в HTML (оба имеют свои сходства), тогда вы получите идею.

Затем мы использовали методы XML, которые SQL Server уже поддерживает, и выбрали узлы (строки), которые затем были преобразованы обратно в VARCHAR для обработки как одно значение (обычная строка).

Это краткое объяснение, хотя существует множество других методов, некоторые из которых также используют XML, это зависит от ваших предпочтений.

Если вам нужны другие техники, вы можете проверить это , что охватывает почти все другие техники там. (Хорошая статья тоже).

Если вы используете SQL Server 2016 или выше, вы можете использовать функцию STRING_SPLIT , которая даст вам те же результаты.

0
ответ дан iSR5 16 January 2019 в 05:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: