postgresql 使用vb.net将变量设置为字段名sql

q9rjltbz  于 2023-11-18  发布在  PostgreSQL
关注(0)|答案(2)|浏览(141)

有了这些数据:

id | month    | 2015 | 2014 | 2013
1  | january  | 2    | 4    | 6  
2  | february | 10   | 12   | 14
3  | march    | 16   | 18   | 20

字符串
我这里有vb.net代码

Dim asd As Double = 2015
Dim msg As Double

sql = "select " & asd & " from tbl_coll_penalty where month = 'february'"
sda = New NpgsqlDataAdapter(sql, pgConnection)
sda.Fill(DS, "t")

msg = DS.Tables("t").Rows(0)(0).ToString()
MessageBox.Show(msg)


我得到了错误的答案,因为这个代码的答案是“2015”,但我希望答案是“10”。有人能帮助我正确的代码吗?

sigwle7e

sigwle7e1#

在PostgreSQL中,列名“2015”被解释为一个文字值。所以当你提交查询时:

SELECT 2015 FROM tbl_coll_penalty ...

字符串
你就可以得到2015年的价值。
在SQL标准中,列标识符不能以数字(0..9)开头。查看文档here。要让PostgreSQL将字符串“2015”解释为列名,您应该将其双引号:

sql = "select """ & asd & """ from tbl_coll_penalty where month = 'february'"

1u4esq0p

1u4esq0p2#

我来不及回答这个问题,但是...
按照以下方式更改您的查询
SQL =“select [”& asd &“] from tbl_科尔_penalty where month = 'february'”
我测试了它与ms-access表和它的工作
它也应该对你的查询起作用。我想是的...

相关问题