【发布时间】:2018-04-02 07:30:38
【问题描述】:
我想使用JSON_VALUE从我的表中查询数据:
var str = "123";
var value = "Name"
using(var conn = GetMyConnection())
{
var result = conn.QueryFirstOrDefault<string>(
@"SELECT [Id] FROM [dbo].[MyTable]
WHERE JSON_VALUE([JsonColumn], @MyQuery) = @Str",
new
{
MyQuery = $"$.{value}",
Str = str
}
);
}
我在 SQL Server 中尝试了这个,它正在工作:
SELECT [Id] FROM [dbo].[MyTable]
WHERE JSON_VALUE([JsonColumn], '$.Name') = '123'
我应该如何调整我的代码?
【问题讨论】:
-
我建议你创建一个存储过程并将你的json字符串作为参数并在那里处理。
-
我在本地环境中尝试了此代码。它工作正常。代码有什么问题?
-
@sarslan 它不起作用,因为 OP 将其作为文字传递,而在 C# 中他试图将其作为变量传递。 SQL Server 中唯一的方法是使用动态 SQL 或在 C# 代码中构建查询字符串。
-
@lad2025 实际上,我使用 Azure Sql 进行了尝试,并且成功了。你是对的,因为我没有用 sql 2016 尝试过。
-
@sarslan 在我的回答中
In SQL Server 2017 and in Azure SQL Database, you can provide a variable as the value of path.Azure 总是领先于本地 :)
标签: c# tsql dapper sql-server-2016 json-query