Проблема с запросом столбца XML с пространствами имен в SQL

Основываясь на android, который я сделал

firebase.auth().currentUser.reload().then(() => {
  console.log(firebase.auth().currentUser)
})

, это возвращает обновленную информацию о пользователе, я не смог найти нигде в документах по какой-либо причине

0
задан ManageThisData 26 March 2019 в 16:36
поделиться

1 ответ

Вам необходимо включить пространство имен в выражение value:

WITH XMLNAMESPACES ('http://test.com/xmlschema/Data_Schema.xsd' AS x1)
SELECT PersonLevel.value('(x1:Email)[1]', 'nvarchar(64)') AS [Email],
       PersonLevel.value('(x1:FirstName)[1]', 'nvarchar(64)') AS [FirstName],
       PersonLevel.value('(x1:LastName)[1]', 'nvarchar(64)') AS [LastName],
       PersonLevel.value('(x1:Department)[1]', 'nvarchar(64)') AS [Department],
       PersonLevel.value('(x1:CountryCode)[1]', 'nvarchar(64)') AS [CountryCode],
       PersonLevel.value('(x1:CompanyName)[1]', 'nvarchar(64)') AS [CompanyName]
FROM @input.nodes('/Data/x1:Data/x1:Person') AS XT1(PersonLevel);

На другой ноте, действительно ли вам нужно все, чтобы быть nvarchar(64)? Я бы предположил, что 64 символов вполне может быть недостаточно для адреса электронной почты (я видел некоторые действительно глупые из них, когда у компаний есть длинные доменные имена с поддоменами и полными именами), однако 64 символа Юникод 62 символа для кода страны (который состоит из 2 символов ASCII). Вы, вероятно, хотите пересмотреть свои типы данных здесь.

0
ответ дан Larnu 26 March 2019 в 16:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: