【问题标题】:Sql Sever with spring jdbc template带有spring jdbctemplate的Sql Server
【发布时间】:2013-06-15 07:48:29
【问题描述】:

我需要使用 spring jdbc 模板连接到 sql server 2008 和 2012 版本。

在数据库中,我们有带空格的列,我尝试使用带有[], "" 空格的包装列,但没有用。当我使用查询时发生以下错误

SELECT Mon, CC Flag FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY Msisdn)AS RowNum FROM ME_PREPAID) AS MyDerivedTable WHERE MyDerivedTable.RowNum BETWEEN 2 AND 100

com.microsoft.sqlserver.jdbc.SQLServerException:列名无效 '抄送'。

请注意,有CC Flag的列

我该如何解决这个问题?

【问题讨论】:

  • 你检查了吗.. 可能是CC_Flag
  • @VishalK : 数据库有一列为CC Flag,而不是CC_Flag

标签: java sql-server sql-server-2008 jdbctemplate spring-jdbc


【解决方案1】:

你可以试试这个 SQL 字符串:

String sql = "SELECT Mon, \"CC Flag\" FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY Msisdn)AS RowNum FROM ME_PREPAID) AS MyDerivedTable WHERE MyDerivedTable.RowNum BETWEEN 2 AND 100";

【讨论】:

  • 我已经尝试过了,它不适用于 spring jdbc 模板。
【解决方案2】:

最后,我找到了这个问题的解决方案。我像这样使用[column name]。它工作正常。我已经试过这样了。但是在将列名与列表匹配时出现了编程错误。我使用了一个值为[Mon],[CC Flag] 的数组列表。

mylist.add="[Mon]";   mylist.add="[CC Flag]";

然后我将此列表传递给查询。当我将列名与列表匹配时,出现了错误。以下是正确答案。

SELECT [Mon], [CC Flag] FROM (SELECT *, ROW_NUMBER() OVER (ORDER BY Msisdn)AS RowNum FROM ME_PREPAID) AS MyDerivedTable WHERE MyDerivedTable.RowNum BETWEEN 2 AND 100

【讨论】:

  • 我给了你这个答案。
猜你喜欢
  • 1970-01-01
  • 2020-10-05
  • 2015-10-06
  • 1970-01-01
  • 2017-05-05
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
相关资源
最近更新 更多