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
3 Réponses :
Vous pouvez utiliser: 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 P>
blockQuote>
ntext code> est obsolète . Vous pouvez lancer Ntext sur XML, puis l'analyser. P>
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.
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 ...
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.
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