Я работаю с базой данных SQL Server. У меня есть столбец, который содержит список с разделителями, и мне нужно написать запрос, который разбивает значения списка на строки. Из просмотра StackOverflow и остальной части Интернета я знаю, что это обычная проблема. Фактически, я нашел здесь обширный анализ:
http://www.sommarskog.se/arrays-in-sql.html
К сожалению, каждое решение, которое я видел на этом сайте и в другом месте, требует от меня создания функции. Это не вариант для меня - мне не хватает привилегий, необходимых для использования команды CREATE.
Без CREATE я знаю, что могу использовать функцию PARSENAME, что-то вроде этого (спасибо Nathan Bedford at Как разбить строку, чтобы я мог получить доступ к элементу x?):.
SELECT PARSENAME(REPLACE('Hello John Smith', ' ', '.'), 2)
Однако PARSENAME работает только для списков из 4-х элементов или меньше. Поэтому мой вопрос заключается в следующем: как написать запрос для разделения строки с разделителями более чем на 4 элемента без создания новых объектов в базе данных?
EDIT:
Спасибо всем за быстрые ответы. Возможно, я оставил некую важную информацию - я взаимодействую с базой данных через ODBC-соединение. В дополнение к операторам CREATE, похоже, есть другие утверждения, которые не работают. Например, я не могу использовать DECLARE в одном утверждении для определения переменной, которая будет использоваться в другом выражении. Насколько я могу судить, я должен положить все в один оператор SELECT (хотя WITH также, похоже, работает для объявления общих таблиц). К сожалению, все предлагаемые до сих пор решения, похоже, требуют объявления переменных вне инструкции SELECT, и это не работает. Пожалуйста, несите меня - я учусь, когда иду.