Имя поля с проблемой пространства в случае для выхода XML Auto
-
16-10-2019 - |
Вопрос
Мой SQL очень прост
Выберите ID как [ID сотрудников], Empname как [имя сотрудника], SAL как [зарплата] из EMP для XML Auto, Elements, Root («клиенты»)
Когда я выполняю этот SQL, я получаю вывод в формате XML. Выход XML
<customers>
<Emp>
<Employee_x0020_ID>1</Employee_x0020_ID>
<Employee_x0020_Name>Tridip</Employee_x0020_Name>
<Salary>2500</Salary>
</Emp>
<Emp>
<Employee_x0020_ID>2</Employee_x0020_ID>
<Employee_x0020_Name>Ari</Employee_x0020_Name>
<Salary>4000</Salary>
</Emp>
<Emp>
<Employee_x0020_ID>3</Employee_x0020_ID>
<Employee_x0020_Name>Dibyendu</Employee_x0020_Name>
<Salary>3500</Salary>
</Emp>
</customers>
Если вы видите имя XML, вы можете понять, что имя поля генерируется динамически из -за пространства.u003CEmployee_x0020_ID> 1u003C/Employee_x0020_ID> это динамически генерируется, но я хочу, чтобы это было сгенерированоu003CEmployee ID> 1u003C/Employee ID> Анкет Я хочу, чтобы пространство было поддержано в XML -подавленном имени. Так что, пожалуйста, скажите мне, что делать ........ спасибо
Решение
Вот выход, который вы ищете, притворяясь XML. Вы даже не сможете разыграть его в XML в любом анализаторе (по крайней мере, это не должно - он не будет в SQL Server).
;with emp(ID, EmpName, Sal) as (select
1, 'tridip', 2500 union all select
2, 'ari', 4000)
select replace(convert(varchar(max),(
select ID as [Employee ID], EmpName as [Employee Name], Sal as [Salary]
from Emp
FOR XML AUTO, ELEMENTS, ROOT('customers'))),
'_x0020_', ' ')
Вывод (переформатирован для ясности - SQL Server возвращает все на одной строке)
<customers><Emp><Employee ID>1</Employee ID><Employee Name>tridip
</Employee Name><Salary>2500</Salary></Emp><Emp>
<Employee ID>2</Employee ID><Employee Name>ari</Employee Name>
<Salary>4000</Salary></Emp></customers>
Другие советы
Из XML -элементы в W3Schools:
Элементы XML должны следовать этим правилам именования:
- Имена могут содержать буквы, номера и другие символы
- Имена не могут начинаться с номера или знака препинания
- Имена не могут начинаться с букв XML (или XML, или XML и т. Д.)
- Имена не могут содержать пробелы
Любое имя может быть использовано, слова не зарезервированы.
(Акцент добавлен)
Я думаю, это тот же вопрос?Для XML Auto и имени столбца с проблемой пространства в SQL Server 2005
Ответ такой же. У вас не может быть места в имени тега XML.