sql - 如何使用占位符将列名值作为 SQL 参数传递

标签 sql sql-server sql-server-2008 placeholder

如何使用参数占位符将列名值作为 SQL 参数传递?

目标是让它发挥作用:

var sql = "SELECT * FROM Condos WHERE @0 LIKE @1";
var sqlData = db.Query(sql,choice,"%"+searchString+"%");

choice 是一个变量,用于存储列名称

@0 是一个列名称(我没有成功地将它作为参数传递)

@1 是一个搜索字符串(我对此没有任何问题)

已经阅读并尝试了很多东西:

下面的不会抛出任何错误,但不会带来任何数据

var sql = "SELECT * FROM Condos WHERE @0 LIKE @1";
var sqlData = db.Query(sql,choice,"%"+searchString+"%");

下面抛出列名称无效 = '@0'

var sql = "SELECT * FROM Condos WHERE [@0] LIKE @1"
var sqlData = db.Query(sql,choice,"%"+searchString+"%");

下面抛出列名无效='choice'

var sql "SELECT * FROM Condos WHERE choice LIKE @0");
var sqlData = db.Query(sql,"%"+searchString+"%");

下面一个抛出必须声明标量变量“@choice”

var sql "SELECT * FROM Condos WHERE @choice LIKE @0");
var sqlData = db.Query(sql,"%"+searchString+"%");

下面的不会抛出任何错误,但不会带来任何数据

var sql = "SELECT * FROM Condos WHERE '@choice' LIKE @0";
var sqlData = db.Query(sql,"%"+searchString+"%");

下面的不会抛出任何错误,但不会带来任何数据

var sql = "SELECT * FROM Condos WHERE '@choice' LIKE @0";
var sqlData = db.Query(sql,"%"+searchString+"%");

下面的不会抛出任何错误,但不会带来任何数据

var sql = "SELECT * FROM Condos WHERE '"+choice+"' LIKE @0";
var sqlData = db.Query(sql,"%"+searchString+"%");

下面一个:大崩溃

var sql = "SELECT * FROM Condos WHERE '"+@choice+"' LIKE @0";
var sqlData = db.Query(sql,"%"+searchString+"%");

下面抛出列名称无效 = 'NameShort'

这正是正确的列名称

var sql = "SELECT * FROM Condos WHERE ['"+choice+"'] LIKE @0";
var sqlData = db.Query(sql,"%"+searchString+"%");

下面一个:大崩溃

var sql = "SELECT * FROM Condos WHERE ['"+@choice+"'] LIKE @0";
var sqlData = db.Query(sql,"%"+searchString+"%");

帮助!!!!!!!!!!!!!!!

最佳答案

简短的回答是你不能;仅支持参数,列名称不支持参数。

您要么必须像 Richard 所说的那样依靠直接文本插入(无论是在代码中发生还是通过使用 SQL Server exec() 函数),或者使用某种库(如 LINQ)来让您动态构建查询,然后将其转换为文本表示形式。

如果您选择直接文本插入路线,请务必确保您不允许插入直接用户输入;自己进行某种翻译以避免 SQL 注入(inject)攻击。

关于sql - 如何使用占位符将列名值作为 SQL 参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12537629/

相关文章:

sql-server - SQL Server IIS 如何查找内存消耗的原因

sql - 如何在 MS SQL WHERE IN 中删除(选择多列)

sql - 如何使用 sum(y) 和不同的表优化 select x 除以子查询的 SQL?

SQL:如何更新多个字段,以便将空字段内容移动到逻辑上最后一列 - 丢失空白地址行

C# SQL 存储过程(插入) - 传递参数和检索参数

sql - Jython 使用 FDMApi 从 SQL 获取值

mysql - 如果我不需要任何数据,SELECT * 是一个好的做法吗?

sql - LIKE '%' 的全文搜索等效项是什么?

mysql - 喜欢...而不是...sql

sql - 更改或更新表后,row_overflow 数据未转换为 in_row 数据