有了这些数据:
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”。有人能帮助我正确的代码吗?
2条答案
按热度按时间sigwle7e1#
在PostgreSQL中,列名“2015”被解释为一个文字值。所以当你提交查询时:
字符串
你就可以得到2015年的价值。
在SQL标准中,列标识符不能以数字(0..9)开头。查看文档here。要让PostgreSQL将字符串“2015”解释为列名,您应该将其双引号:
型
1u4esq0p2#
我来不及回答这个问题,但是...
按照以下方式更改您的查询
SQL =“select [”& asd &“] from tbl_科尔_penalty where month = 'february'”
我测试了它与ms-access表和它的工作
它也应该对你的查询起作用。我想是的...