Строки, разделенные запятыми, вертикальные и горизонтальные, значения в SQL Server - PullRequest
0 голосов
/ 25 ноября 2010

Как получить строки в виде значений через запятую.

select [name] from sys.objects where type='u'

я получаю это:

DropDownList
SubActivityDetails
Report
Employees
UserMaster
ProjectMaster

Я хочу это:

DropDownList,SubActivityDetails,Report,Employees,UserMaster,ProjectMaster

только в одном запросе

И в этом случае

select [name],[object_id] from sys.objects where type='u'

Я понял:

DropDownList    66099276
SubActivityDetails  197575742
Report  254623950
Employees   270624007

Но я хочу это:

  ["SubActivityDetails",197575742],
  ["Report",254623950],
  ["Employees",270624007]

так что он похож на json.

И данных было бы много, поэтому производительность является главной проблемой!

что лучше

дело 1:

ОБЪЯВИТЬ @Val VARCHAR (МАКС.) начать выберите @Val = isnull (@val + ',' + [имя], [имя]) от sys.objects
где type = 'u' ВЫБЕРИТЕ @Val конец

дело 2:

ОБЪЯВИТЬ @Val VARCHAR (МАКС.) начать выберите @Val = COALESCE (@val + ',' + [имя], [имя]) от sys.objects
где type = 'u' ВЫБЕРИТЕ @Val конец

1 Ответ

5 голосов
/ 25 ноября 2010

Посмотрите на что-то вроде этого

DECLARE @Val VARCHAR(MAX)
select  @Val = COALESCE(@val + ',' + [name], [name])
from    sys.objects 
where   type='u' 

SELECT @Val

Хорошо, поэтому для второго запроса мы можем попробовать

DECLARE @Val VARCHAR(MAX)

select  @Val = COALESCE(@val + ',' + '["' + [name] + '",' + CAST([object_id] AS VARCHAR(50)) + ']', '["' + [name] + '",' + CAST([object_id] AS VARCHAR(50)) + ']') 
from    sys.objects 
where   type='u' 

SELECT @Val
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...