Чтобы соединить имена всех менеджеров проектов с проектами, которые имеют несколько менеджеров проектов, пишите:
SELECT a.project_id,a.project_name,Stuff((SELECT N'/ ' + first_name + ', '+last_name FROM projects_v
where a.project_id=project_id
FOR
XML PATH(''),TYPE).value('text()[1]','nvarchar(max)'),1,2,N''
) mgr_names
from projects_v a
group by a.project_id,a.project_name
Разница заключается в том, какая кодировка по умолчанию используется. Из MSDN мы видим, что Set-Content
по умолчанию имеет кодировку ASCII, которая читается большинством программ (но может не работать, если вы не пишете английский). Оператор перенаправления >
с другой стороны работает с внутренним строковым представлением Powershell, которое представляет собой .Net System.String
, который является UTF-16 (ссылка )
. В качестве side-note, вы также можете использовать Out-File
, который использует кодировку Unicode.
Кодировка Set-Content по умолчанию - ASCII. Это можно подтвердить следующим образом:
Get-Help -Name Set-Content -Parameter Encoding;
Кодировка по умолчанию для оператора перенаправления PowerShell >
является Unicode. Это можно подтвердить, посмотрев раздел help about_Redirection
в PowerShell.