Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 select название полей и данные из таблицы  [new]
Pupkin
Member

Откуда:
Сообщений: 106
Можно ли написать такой запрос, который возвращает названия полей и величины для единственной записи в таблице (или для top 1) ?

Примерно так (без учета того, что типы полей могут быть разными):

select sk.name, t.value
from syscolumns sk
left join table t
on sk.name = t.fieldName
22 фев 16, 16:05    [18851368]     Ответить | Цитировать Сообщить модератору
 Re: select название полей и данные из таблицы  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Pupkin
Можно ли написать такой запрос, который возвращает названия полей и величины для единственной записи в таблице (или для top 1) ?

ну так имена и размерность полей и храняться в едиственном екземляре...
INFORMATION_SCHEMA.COLUMNS
22 фев 16, 16:26    [18851416]     Ответить | Цитировать Сообщить модератору
 Re: select название полей и данные из таблицы  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
SELECT c.name, TYPE_NAME(c.system_type_id), c.*
FROM sys.columns c
WHERE c.[object_id] = OBJECT_ID('dbo.tbl')

Или Вы имели ввиду что-то другое?
22 фев 16, 16:27    [18851423]     Ответить | Цитировать Сообщить модератору
 Re: select название полей и данные из таблицы  [new]
Pupkin
Member

Откуда:
Сообщений: 106
я имел ввиду другое:

Таблица:
create table example(User varchar(99),BootSize int,BornDay)
insert into example select 'Napoleon',43,'1820-01-01'

Script должен вернуть:

'User' 'Napoleon'
'BootSize' '43'
'BornDay' '1820-01-01'
22 фев 16, 16:41    [18851463]     Ответить | Цитировать Сообщить модератору
 Re: select название полей и данные из таблицы  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Pupkin
'User' 'Napoleon'
'BootSize' '43'
'BornDay' '1820-01-01'

а просто select вам чем не угодил ?
22 фев 16, 16:43    [18851471]     Ответить | Цитировать Сообщить модератору
 Re: select название полей и данные из таблицы  [new]
Pupkin
Member

Откуда:
Сообщений: 106
не угодил тем, что не возвращает название поля.
Вы почитайте вопрос внимательно.
нужно название поля (syscolumns.name) и значение (* from таблица)
22 фев 16, 16:49    [18851489]     Ответить | Цитировать Сообщить модератору
 Re: select название полей и данные из таблицы  [new]
o-o
Guest
он хочет unpivot.
у него 1 строка в таблице, а хочет он из этого получить всего 2 колонки:
название столбца -- данные столбца
22 фев 16, 16:49    [18851492]     Ответить | Цитировать Сообщить модератору
 Re: select название полей и данные из таблицы  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
а можно поинтресоваться зачем ? И где вам ето не возращается то ?
22 фев 16, 16:50    [18851495]     Ответить | Цитировать Сообщить модератору
 Re: select название полей и данные из таблицы  [new]
Pupkin
Member

Откуда:
Сообщений: 106
не две, а столько, сколько колонок
22 фев 16, 16:53    [18851510]     Ответить | Цитировать Сообщить модератору
 Re: select название полей и данные из таблицы  [new]
Pupkin
Member

Откуда:
Сообщений: 106
Maxx
а можно поинтресоваться зачем

поинтресоваться то можно, только зачем ?
22 фев 16, 17:00    [18851529]     Ответить | Цитировать Сообщить модератору
 Re: select название полей и данные из таблицы  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Pupkin
поинтресоваться то можно, только зачем ?

как правило "нужда" в таких решениях - решаеться гораздо проще, вот и спрашиваю зачем.
22 фев 16, 17:03    [18851539]     Ответить | Цитировать Сообщить модератору
 Re: select название полей и данные из таблицы  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
Pupkin,
выдран кусок,
DECLARE 
	@TableName	TName,
	@Id		TRowId

	DECLARE @SQL VARCHAR(MAX) = '' 
	CREATE TABLE #Res 
	(
		[Column_name]	TCode,
		[Type]		TCode,
		[Length]	decimal,
		[Value]		VARCHAR(MAX)
	)	

	INSERT INTO #Res
	(
		[Column_name],
		[Type],
		[Length]
	)
	SELECT
		a.Name				as [Column_name],
		type_name(a.user_type_id)	as [Type],
		convert(int, a.max_length)	as [Length]
	FROM 
		sys.all_columns	a			
	WHERE 
		object_id = @objid


	SELECT 
		@SQL = @SQL + 'WHEN [Column_name] = ''' + [Column_name] +''' THEN CONVERT(varchar(MAX),x.'+[Column_name] + ') '
	FROM #Res
	
	SET @SQL = N'
	SELECT 
		[Column_name],
		[Type],
		[Length],
		CASE 
			' + @Sql + '
		END as Value
	FROM 
		#Res		a
	LEFT JOIN	
		'+@TableName+'	x
	ON
		x.Id =' + STR(@Id)

	EXECUTE(@SQL)
22 фев 16, 17:03    [18851541]     Ответить | Цитировать Сообщить модератору
 Re: select название полей и данные из таблицы  [new]
o-o
Guest
Pupkin
не две, а столько, сколько колонок

o-o
он хочет unpivot.
у него 1 строка в таблице, а хочет он из этого получить всего 2 колонки:
название столбца -- данные столбца

вы намекаете, что вот тут у вас не 2 колонки???
Pupkin
я имел ввиду другое:

...
Script должен вернуть:

'User' 'Napoleon'
'BootSize' '43'
'BornDay' '1820-01-01'

строки от столбцов-то отличаете?
declare @t table ([User] varchar(99),BootSize int,BornDay date)
insert into @t select 'Napoleon',43,'1820-01-01'

select id, field_, val
from
  (select 1 as id, [user], 
          cast(BootSize as varchar(99)) as BootSize, 
          CONVERT(varchar(99), BornDay, 103 ) as BornDay from @t) p
unpivot (field_ for val in ([user], BootSize, BornDay)) as u 
-------------
id	field_	val
1	Napoleon	user
1	43	        BootSize
1	01/01/1820	BornDay       
22 фев 16, 17:04    [18851546]     Ответить | Цитировать Сообщить модератору
 Re: select название полей и данные из таблицы  [new]
ъ
Guest
create table example([User] varchar(99),BootSize int,BornDay date)
insert into example select 'Napoleon',43,'1820-01-01'
insert into example select 'Pupkin',88,'1950-01-01'


declare @xml xml=(select * from example for xml raw, elements)

select 
			 t.c.value('local-name(.)', 'varchar(20)') as field
			,t.c.value('./text()[1]', 'varchar(20)') as value
		from @xml.nodes('/row/*') as t(c)


drop table example
22 фев 16, 17:45    [18851676]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: select название полей и данные из таблицы  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34608
Pupkin
не угодил тем, что не возвращает название поля.
Вы почитайте вопрос внимательно.
нужно название поля (syscolumns.name) и значение (* from таблица)


Названия полей и типы их данных возвращаются в метаданных возвращаемого набора данных, они доступны на клиентской стороне через соответствующий API (CLI).
2 июн 17, 10:47    [20533804]     Ответить | Цитировать Сообщить модератору
 Re: select название полей и данные из таблицы  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34608
Sorry, что поднял топик, просто не мог терпеть, нормальный ответ так и не дали.
2 июн 17, 10:48    [20533810]     Ответить | Цитировать Сообщить модератору
 Re: select название полей и данные из таблицы  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
MasterZiv,

а где тут про клиентскую часть, что-то?
2 июн 17, 10:58    [20533850]     Ответить | Цитировать Сообщить модератору
 Re: select название полей и данные из таблицы  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7757
MasterZiv,

тут речь о журналировании в извращённой форме, а не о разборе данных на клиенте.
2 июн 17, 11:56    [20534116]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить