Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выбрать определённый номер столбца таблицы / 7 сообщений из 7, страница 1 из 1
16.09.2019, 15:52
    #39862382
Yurik_Tuturik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать определённый номер столбца таблицы
Здравствуйте! Подскажите, пожалуйста, как выбрать определённый номер столбца в таблице. В INFORMATION_SCHEMA.COLUMNS в ORIGINAL_POSITION этот номер вроде указан, а как указать его в команде select? Думаю, что это должно быть очень просто, но не могу сообразить как. Наверное, что-то типа select A[4] from A, но такого пока нет в SQL Server
...
Рейтинг: 0 / 0
16.09.2019, 16:03
    #39862390
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать определённый номер столбца таблицы
Yurik_Tuturikкак указать его в команде select?А вот никак. Номер из INFORMATION_SCHEMA.COLUMNS получил? так лучше получи имя, вставь в текст запроса, да выполни через EXEC.
...
Рейтинг: 0 / 0
16.09.2019, 16:07
    #39862395
Yurik_Tuturik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать определённый номер столбца таблицы
Спасибо, вроде понял - через динамический запрос в хранимой процедуре. Вроде больше никак. Тему можно закрывать. Извините за беспокойство
...
Рейтинг: 0 / 0
17.09.2019, 13:46
    #39862841
uaggster
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать определённый номер столбца таблицы
Yurik_TuturikСпасибо, вроде понял - через динамический запрос в хранимой процедуре. Вроде больше никак. Тему можно закрывать. Извините за беспокойство
Ну почему ж, обязательно, через динамический то?

Ежели, т.с., per anus, то можно и без динамики:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
if OBJECT_ID('tempdb..#t') is not null
	drop table #t
go

Create table #t (co1 int, col2 varchar(10), col3 datetime)
go

Insert into #t
Values
(1, 'test1', CURRENT_TIMESTAMP),
(2, 'test2', DATEADD(day, 1, CURRENT_TIMESTAMP)),
(3, 'test3', DATEADD(day, -1, CURRENT_TIMESTAMP))

Select [value] from 
(
	Select tt.nn.value('(.)[1]', 'nvarchar(max)') [value]
	,ROW_NUMBER() over (order by 1/0) N 
	from 
	(Select * from #t
		for xml path('root'), type
	) t(n)
	cross apply t.n.nodes('/root/*') tt(nn)
) ttt
Where N % 3 = 2


Здесь 3 - общее количество полей в таблице, а 2 - извлекаемое поле.
...
Рейтинг: 0 / 0
17.09.2019, 14:16
    #39862865
Критик
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать определённый номер столбца таблицы
Yurik_Tuturik,

вероятнее всего у вас проблема с архитектурой решения,
ибо делать ПО, которое зависит от номера столбца, довольно глупо
...
Рейтинг: 0 / 0
18.09.2019, 21:36
    #39863597
Gerros
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать определённый номер столбца таблицы
Yurik_Tuturik,

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
declare @num int = 1

select x = case @num
  when 1 then LoginProvider
  when 2 then ProviderKey
  when 3 then UserId
  else null
end
from AspNetUserLogins
...
Рейтинг: 0 / 0
19.09.2019, 12:31
    #39863872
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выбрать определённый номер столбца таблицы
Yurik_Tuturik,

в реляционной алгебре таблица - это куча (неупорядоченное множество) столбцов (атрибутов). В ней нет порядка столбцов. Поэтому неверно исходить из предпосылки, что сервер хранит на физическом или логическом уровне данные упорядоченно. Порядок столбцов может измениться при определённых действиях.
Наилучшим вариантом будет создание представления таблицы, в которым вы явно пронумеруете столбцы. Например
Код: sql
1.
2.
3.
4.
5.
6.
CREATE VIEW View1
AS
SELECT
Fielad1 AS [1],
Field5 AS [2]
FROM Table1;
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Выбрать определённый номер столбца таблицы / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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