繁体   English   中英

列名作为参数

[英]column name as parameter

我在SQL表中有一些像text_en,text_es,text_de这样的列。 现在我想根据语言从一列中检索值。 所以我创建了一个sql字符串SELECT @textfield FROM <table> ,在vb代码中我使用了cmd.AddWithValue("textfield", "text_" + lang)但是sql返回列的名称而不是该列的值。 我怎样才能获得价值?

你也可以

SELECT CASE @textfield
         WHEN 'text_en' THEN text_en
         WHEN 'text_es' THEN text_es
         WHEN 'text_de' THEN text_de
       END AS local_text
FROM TableName

不要将其作为参数传递,将其作为字符串文字传递。 你的sql语句应该是以下形式:

string col1name = 'somename';
string sql = 'SELECT ' + col1name + ' FROM TableName';

但是,如果您有一个参数传递给WHERE子句,则应像在问题中一样将其作为参数传递。

请注意:您的查询,这种方式容易受到SQL Injection的攻击。 在您的情况下,您可以将连接的SQL语句传递给存储过程,然后使用sp_executesql ,而不是EXEC()

你不能在SQL中使用变量是列名,反正不是这样的。

您需要使用动态SQL来指定像这样的列名。

我建议阅读动态SQL的诅咒和祝福,以全面处理该主题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM