我使用serilog和ms server来记录数据。在Properties
列中,我有这个:
<root><prop key="Meassage">Person is createrd</prop><prop key="FirstName">John</prop><prop key="LastName">Rami</prop><prop key="BirthDate">10/19/1996 1:10:27 PM</prop></root>
在数据库中存储为nvarchar(max)
数据类型。
我想获得每个属性的值我尝试使用这个
using (SqlConnection con = new SqlConnection(connectionString))
{
con.Open();
SqlCommand comm = new SqlCommand("SELECT Properties.value("/properties/property[@key='FirstName'])[1]", 'nvarchar(max)') AS FName from EventLog", con);
SqlDataReader srd = comm.ExecuteReader();
while (srd.Read())
{
string s = srd["FName"].ToString();
}
con.Close();
}
但是我得到一个错误:
System.Data.SqlClient。SqlException: '关键字'from'附近语法错误
解决方案吗?
这是正确的解决方案
SELECT
CAST(Properties as XML).value(
'(/properties/property)[1]'
, 'nvarchar(max)'
)
AS FName
FROM EventLog
WHERE
CAST(Properties as XML).value(
'(/properties/property/@key)[1]=''FirstName'''
, 'bit'
) = 1