Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / STRING_SPLIT - присвоить алиас правильно / 6 сообщений из 6, страница 1 из 1
05.09.2019, 11:49
    #39857816
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
STRING_SPLIT - присвоить алиас правильно
Есть простая конструкция (схематично):

Код: sql
1.
2.
3.
4.
5.
SELECT id
FROM table
CROSS APPLY STRING_SPLIT(@param1, ',')
CROSS APPLY STRING_SPLIT(@param2, ',')
WHERE ...



Само собой, использовать такое невозможно - оба STRING_SPLIT производят одноколоночный rowset, причём поле в обоих имеет имя value, и фиг сошлёшься, ибо нет алиаса таблицы. Та же проблема, если вместо CROSS APPLY использовать любой JOIN.

Вроде чего проще - дай алиас, типа

Код: sql
1.
CROSS APPLY STRING_SPLIT(@param1, ',') AS param1(value)



Ан нет - немедленно получаешь сообщение, что функция STRING_SPLIT не определена.

Понятно, что задача элементарно решается какой-нибудь конструкцией типа

Код: sql
1.
2.
3.
4.
5.
SELECT id
FROM table
CROSS APPLY (SELECT value FROM STRING_SPLIT(@param1, ',')) AS param1(value)
CROSS APPLY (SELECT value FROM STRING_SPLIT(@param2, ',')) AS param2(value)
WHERE ...



или то же в CTE - но как бы "на глаз" явно избыточный подзапрос.

Вопрос: можно ли заалиасить без подзапроса? если да - как именно?
...
Рейтинг: 0 / 0
05.09.2019, 11:56
    #39857823
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
STRING_SPLIT - присвоить алиас правильно
Код: sql
1.
CROSS APPLY STRING_SPLIT(@param1, ',') AS param1
...
Рейтинг: 0 / 0
05.09.2019, 12:06
    #39857827
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
STRING_SPLIT - присвоить алиас правильно
Когда можно указывать алиасы столбцов описано в документации - https://docs.microsoft.com/ru-ru/sql/t-sql/queries/from-transact-sql?view=sql-server-2017
...
Рейтинг: 0 / 0
05.09.2019, 12:07
    #39857829
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
STRING_SPLIT - присвоить алиас правильно
Akina,

авторSELECT
a.*
,a = x.Value
,b = y.Value
FROM test a
CROSS APPLY STRING_SPLIT(a.Val, ',') as x
CROSS APPLY STRING_SPLIT(a.Val, ',') as y
...
Рейтинг: 0 / 0
05.09.2019, 12:13
    #39857832
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
STRING_SPLIT - присвоить алиас правильно
авторили то же в CTE - но как бы "на глаз" явно избыточный подзапрос.
ну разворачивает в тоже самое
...
Рейтинг: 0 / 0
05.09.2019, 13:09
    #39857873
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
STRING_SPLIT - присвоить алиас правильно
Гм... доупрощался, называется.

На самом деле основное-то, что хотелось и что я напрасно опустил - это конечное желание переименовать само поле. Т.е. получить не аналог
Код: sql
1.
CROSS APPLY STRING_SPLIT(@param1, ',') AS param1(value)

а аналог
Код: sql
1.
CROSS APPLY STRING_SPLIT(@param1, ',') AS param1(param1)

решаемый конструкцией
Код: sql
1.
CROSS APPLY (SELECT value FROM STRING_SPLIT(@param1, ',')) AS param1(param1)
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / STRING_SPLIT - присвоить алиас правильно / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]