[英]Cannot find either column “dbo” or the user-defined function or aggregate “dbo.GetUserBranchIDs”, or the name is ambiguous
[英]to solve sql exception Cannot find either column “partinfo” or the user-defined function or aggregate “partinfo.query”, or the name is ambiguous
我使用此pgm從名為partinfo的xmlstring格式的列中獲取值。這是表test中的列之一.partinfo列可以被視為包含許多列的另一個表。我想從該列中的一個讀取數據在這種情況下安裝日期。但是在執行時,我得到一個
SQL異常:找不到列“ partinfo”或用戶定義的函數或聚合“ partinfo.query”,或者名稱不明確。我該如何解決。
namespace WpfApplication1
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
try {
SqlConnection con = new
SqlConnection("Data Source=NIP007\\SQLEXPRESS;
Initial Catalog=test;User ID=sa;Password=nest123@!");
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)
{
}
}
}
}
目前尚不清楚您的錯誤究竟在哪里,因為您的SQL應該可以正常工作( 在此處演示 ),並且不返回錯誤,盡管我不確定輸出是否是您想要的,因為它只是將XML中所有已安裝的日期連接在一起作為一個長字符串:
如我先前的回答中所述,如果每行有多個安裝日期,則需要使用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;Password=nest123@!"))
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)
{
}
如果這樣做沒有幫助,您可以過帳表Test的DDL和一些示例數據。
謝謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.