разрешить исключение sql Не удается найти ни один столбец «partinfo», либо определенную пользователем функцию или агрегат «partinfo.query», либо имя неоднозначно

Я использую этот pgm для получения значения из столбца в формате xmlstring с именем partinfo.which является одним из столбцов в таблице test.the столбец partinfo можно рассматривать как другую таблицу, содержащую много столбцов. И я хочу читать данные из одного из этих столбцов который установлен в этом случае. Но во время выполнения я получаю

Исключение sql: Не удается найти ни один из столбцов "partinfo" или определяемый пользователем   функции или агрегата «partinfo.query», или имя неоднозначно.   я могу решить это.

namespace WpfApplication1
{
    /// 
    /// Interaction logic for MainWindow.xaml
    /// 
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            try {

               SqlConnection con = new 
                   SqlConnection("Data Source=NIP007\\SQLEXPRESS;
                        Initial Catalog=test;User ID=sa;[email protected]!");
                con.Open();


            string query =  "SELECT [partinfo].query('.//InstalledDate').value('.','VARCHAR(MAX)')FROM [test]";

            SqlCommand cmd = new SqlCommand(query, con);
          //StringBuilder builder=new StringBuilder();
          //string PartInfo=string.Empty;


            SqlDataReader dr = cmd.ExecuteReader();
            while (dr.Read())
            {
                string str5 =dr.ToString();
                if (!string.IsNullOrEmpty(str5))
                {

                    textBox1.Text=str5;
                }
            }

        }
        catch(Exception ex)
        {

        }
      }
   }
}
1
Каково имя столбца xml в Test? Я предполагаю, что это не PartInfo.
добавлено автор GarethD, источник
Кроме того, поскольку я предполагаю, что это следующий из вашего предыдущего вопроса, возможно ли иметь более одного PartInfo для DocumentElement в вашем XML?
добавлено автор GarethD, источник
это PartInfo.ya.its, связанных с этим вопросом. Возможно, более чем одна PartInfo на Documentelement в xml возможно. Но я не могу понять, в чем причина этого исключения. PLZ скажите мне решение.
добавлено автор user1925879, источник

1 ответы

Неясно, в чем именно заключается ваша ошибка, потому что ваш SQL должен работать нормально ( Демо здесь ) и не возвращать ошибку, хотя я не уверен, что вывод будет тем, что вы хотите, поскольку он просто объединяет все установленные даты в xml как одну длинную строку:

Как было сказано в моем предыдущем ответе, если у вас есть несколько установленных дат в строке, вы захотите использовать CROSS APPLY, чтобы установить установленные даты в виде отдельных строк.

демонстрационный SQL с использованием CROSS APPLY

Если вы действительно хотите, чтобы даты были объединены с одной строкой, я бы предложил использовать построитель строк, чтобы сделать это:

try
{
    string query = @"SELECT  InstalledDate = x.value('InstalledDate[1]', 'DATETIME')
                    FROM    dbo.Test
                            CROSS APPLY PartInfo.nodes('/DocumentElement/PartInfo') p (x);";

    using (var con = new SqlConnection("Data Source=NIP007\\SQLEXPRESS;Initial Catalog=test;User ID=sa;[email protected]!"))
    using (var cmd = new SqlCommand(query, con))
    {
        con.Open();
        using (var dr = cmd.ExecuteReader())
        {
            var builder = new StringBuilder();
            while (dr.Read())
            {
                string str5 = dr.GetString(0);
                if (!string.IsNullOrEmpty(str5))
                {
                    builder.Append(str5 + ",");
                }
            }
            textBox1.Text = builder.ToString();
        }
    }

}
catch (Exception ex)
{
}

Если это не поможет, вы можете отправить DDL вашего теста таблицы и некоторые примеры данных.

благодаря

0
добавлено
SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)