Неверные аргументы STRING_SPLIT в SQL Server - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь выполнить синтаксический анализ ячейки с типом данных nvarchar (max), например csv в SQL Server 2017. Я надеялся использовать STRING_SPLIT для возврата строки данных для каждого значения в массивоподобной строке,Однако, когда я запускаю следующий код, я получаю сообщение об ошибке:

select this_column
into #t
from that_table
where coordinate_x = 1
and coordinate_y = 7

select * from STRING_SPLIT(#t.this_column, ',')

Сообщение 4104, уровень 16, состояние 1, строка 16
идентификатор из нескольких частей "# t.this_column"невозможно связать
Сообщение 8116, уровень 16, состояние 1, строка 16
Тип данных аргумента void недопустим для аргумента 1 функции string_split

Как я могу проанализировать эти данные?

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

Вы не можете передать таблицу встроенной табличной функции, вам нужно включить ее в FROM:

SELECT {YourColumns}
FROM #t T
     CROSS APPLY STRING_SPLIT(T.this_column, ',') SS;
0 голосов
/ 14 декабря 2018

Вы захотите использовать перекрестное наложение с вашей временной таблицей

Вот рабочий пример, чтобы вы могли увидеть, как это работает:

DECLARE @TestData TABLE
    (
        [TestData] NVARCHAR(MAX)
    );

INSERT INTO @TestData (
                          [TestData]
                      )
VALUES ( N'1,2,3,4,5,6,7,8,9');

SELECT [b].[value] FROM @TestData [a]
CROSS APPLY[STRING_SPLIT([a].[TestData], ',') [b];

Так что для вашей ситуации, простоНебольшая настройка того, что у вас уже есть, что-то вроде:

SELECT [b].[value] FROM #t a
CROSS APPLY STRING_SPLIT(a.this_column,',') b
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...