Eu tenho abaixo da tabela sql. Preciso adicionar uma coluna xmls
à minha tabela para que a tabela fique como abaixo.
CREATE TABLE employees(
id integer,
name VARCHAR(MAX),
designation VARCHAR(MAX),
manager integer,
hired_on date,
salary integer,
commission float,
dept integer);
INSERT INTO employees VALUES (1,'JOHNSON','ADMIN',6,'12-17-1990',18000,NULL,4);
INSERT INTO employees VALUES (2,'HARDING','MANAGER',9,'02-02-1998',52000,300,3);
INSERT INTO employees VALUES (3,'TAFT','SALES I',2,'01-02-1996',25000,500,3);
INSERT INTO employees VALUES (4,'HOOVER','SALES I',2,'04-02-1990',27000,NULL,3);
SELECT * FROM employees WHERE id < 10;
Os novos xmls de coluna devem ter a aparência abaixo (última coluna abaixo), sei que posso fazer isso com a ajuda de utilitários de string, mas não consigo descobrir a solução simples, porém eficaz e ideal.
Isso é o que eu tentei, mas isso não me dá a marca final summary
.
SELECT (
SELECT id AS '@id',
designation AS '@type',
salary AS '@salary'
FROM employees b
WHERE b.id = a.id
FOR XML PATH('summary'))
FROM employees a
Estritamente falando, uma tag de fechamento automático
<summary />
e uma tag completa<summary></summary>
têm o mesmo significado em XML, portanto, não deve fazer diferença para você ou para qualquer analisador de XML adequado.Mas se você quiser forçá-lo a gerar uma tag completa em vez de uma de fechamento automático, você pode adicionar uma
text()
coluna vazia:db<>violino
Você não precisa se autojuntar na subconsulta, pode se referir diretamente às colunas externas. Observe também que você deve usar
[]
para citar colunas quando necessário, não''
.Nota lateral: você não precisa armazenar este XML, você pode criar uma exibição que o exibe quando você o consulta.
Eu recomendaria não fazer isso de forma alguma.
Todos os valores de dados no XML estão presentes em outros campos do registro, o que torna o XML um campo derivado .
Regra geral: não armazene dados que você possa derivar de outros dados.
Em vez disso, crie o XML "sob demanda", em uma consulta, em uma exibição ou em uma coluna calculada.
Na sua forma mais simples (embora com maior probabilidade de quebrar se os caracteres com significado XML não forem escapados corretamente ):
E, como outros já disseram,
<summary></summary>
são<summary/>
completamente equivalentes em XML. (Para [X]HTML? Talvez não, mas para o próprio XML? Sim).