-1
votes

Quertise de la colonne XML

Ces résultats sont situés dans la colonne XML de la table.

surname    name    middle_name    date_birth` 
----------------------------------------------   
Hasanov    Mehman   Adil         1986-05-19


0 commentaires

3 Réponses :


3
votes

Vous pouvez utiliser: xxx

dB < > Fiddle Demo


EDIT:

J'ai l'erreur ... MSG 9506, niveau 16, état 1, ligne 1 La méthode XMLDT 'Nœuds' ne peut être appelée que sur des colonnes de type XML. Mon type de colonne XML est NText

ntext est obsolète . Vous pouvez lancer Ntext sur XML, puis l'analyser. xxx

DB <> Fiddle Demo


3 commentaires

J'ai eu l'erreur ... MSG 9506, niveau 16, état 1, ligne 1 La méthode XMLDT 'Nœuds' ne peut être appelée que sur des colonnes de type XML. Mon type de colonne XML est NText


La minute d'exécution est 04:06 mais toujours aucun résultat.


La minute d'exécution est 04:06 mais toujours aucun résultat.



0
votes

Vous pouvez utiliser XQuery comme suit:

SELECT K.surname,
       K.name,
       K.middle_name,
       K.date_birth
FROM
(
    SELECT msg.value('(client/surname/@value)[1]', 'varchar(max)') AS surname,
           msg.value('(client/name/@value)[1]', 'varchar(max)') AS name,
           msg.value('(client/middle_name/@value)[1]', 'varchar(max)') AS middle_name,
           msg.value('(client/date_birth/@value)[1]', 'date') AS date_birth
    FROM tblTest
) AS K INNER JOIN ...


5 commentaires

Il est inclus pour un Select.J'ai une table appelée données et il y a une colonne de contenu contenant XML Data.Column Type est NText.So, je dois rejoindre cette table de données avec une autre table et pour lire le contenu des données de la table de contenu avec chaque sélectionner


@garibhasanov J'ai mis à jour la réponse et incluez le guide qui vous amène à extraire les données de XML stockées dans une table.


Sélectionnez Cast (msg sous XML) .Value ('(client / nom de famille / @ Valeur) [1]' ',' Varchar (MAX) ') En tant que nom de famille, Cast (msg sous XML) .value (' (Nom / Nom / @ valeur) [1] ',' varchar (max) ') en tant que nom, déposée (msg comme xml) .value (' (client / nommé / nommé / @ @ @) [1] ',' varchar (max) ') comme Nom Middle_Name, Moulage (msg comme xml) .value ('(client / date_birth / @ valeur) [1]' ',' date ') comme date_birth de TblTest; Après avoir utilisé ci-dessus Requête, j'ai eu une erreur (analyse XML: ligne 1, caractère 38, impossible d'activer le codage)


Ensuite, j'ai essayé avec cette question suivante. Travaillé. Sélectionnez Cast (remplacer (couler ([msg] sous forme nvarchar (max)), 'coding = "utf-8"', '') comme xml) .value ('(client / nom / valeur / valeur) [1]', 'Nvarchars (max)') En tant que nom de famille, coulé (remplacer (msg ([msg] comme nvarchar (max)), 'coding = "utf-8"' ',' ') comme xml) .value (' (client / nom / @ Valeur) [1] '', 'NvarchaRar (max)') en [nom], coulée (remplacer ([msg] comme nvarchar (max)), 'coding = "utf-8"', '') Comme xml) .value ('(Client / Middle_Name / @ Value) [1]' ',' NvarchaRar (max) ') Comme Middle_Name,


@garibhasanov j'ai mis à jour la réponse et inclure votre grand commentaire. Merci. N'oubliez pas de cliquer sur le UPVOTE, si vous avez trouvé cela utile.



0
votes

a fonctionné avec cette requête

SELECT

CAST(REPLACE(CAST([msg] AS NVARCHAR(MAX)), 'encoding="utf-8"', '')
AS XML).value('(client/ surname/@value)[1]', 'nvarchar(max)') AS surname,

CAST(REPLACE(CAST([msg] AS NVARCHAR(MAX)), 'encoding="utf-8"', '')
AS XML).value('(client/ name/@value)[1]', 'nvarchar(max)') AS [name],

CAST(REPLACE(CAST([msg] AS NVARCHAR(MAX)), 'encoding="utf-8"', '')
AS XML).value('(client/ middle_name/@value)[1]', 'nvarchar(max)') AS middle_name,

CAST(REPLACE(CAST([msg] AS NVARCHAR(MAX)), 'encoding="utf-8"', '')
AS XML).value('(client/ date_birth/@value)[1]', 'nvarchar(max)') AS date_birth


0 commentaires