Reputation: 75
An error occurs when running this XML SQL in C#. What is missing? It works fine in SQL Server management studio but not in the c#.
protected DataTable ServiceCodes(string orderColumn = default(string), bool orderAscending = true)
{
string sql = @" SELECT DISTINCT(Split.a.value('.', 'VARCHAR(100)')) AS Data
FROM
(
SELECT CAST('<M>' + REPLACE(Text09, ',', '</M><M>') + '</M>' AS XML) AS Data
FROM Assets
WHERE Category = 'Service'
) AS A CROSS APPLY Data.nodes ('/M') AS Split(a) ORDER BY Data";
return DatabaseConnection.ExecuteDataTable(sql, 120000);
}
Upvotes: 3
Views: 10353
Reputation: 117420
I think there's some special character in you Text09
column. Try this:
SELECT DISTINCT(Split.a.value('.', 'VARCHAR(100)')) AS Data
FROM
(
SELECT CAST('<M>' + replace((select Text09 + '' for xml path('')), ',', '</M><M>') + '</M>' AS XML) AS Data
FROM Assets
WHERE Category = 'Service'
) AS A CROSS APPLY Data.nodes ('/M') AS Split(a) ORDER BY Data
see sql fiddle demo
Upvotes: 4