我得到下面的异常时,我运行查询:其中条件预计在上下文指定的非布尔类型的表达式,在SQL服务器附近
SELECT * FROM (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT 0)) AS ROW_NUM_VAL, CASE WHEN ingest_table.[OVER]_RAN BETWEEN '10' AND '12' THEN 'F' ELSE 'P' END [OVER]_STATUS FROM(SELECT [OVER] AS [OVER]_RAN FROM S_3000_7_vt)ingest_table)rgtt WHERE [OVER]_STATUS = 'F'
例外:
com.microsoft.sqlserver.jdbc.SQLServerException: 表示在期望条件的上下文中指定的非布尔类型, 靠近'_RAN'。
我该如何解决这个问题?
我不确定除了显然通过JDBC执行查询之外,Java是如何涉及的。除此之外,我假设'[OVER] _RAN'是问题。我不太了解SQL Server,所以我不知道'[OVER]'是什么意思,但我会认为它不符合你的期望。 – Thomas
另一件可能成为问题的事情是:我会说在'... ELSE'P'END [OVER] _STATUS FROM ...'中的'END'和'[OVER] _STATUS'之间缺少一个逗号。您是否尝试直接在数据库上执行该查询,即通过使用某个本机客户端? – Thomas
sql server有一个关键字OVER子句,所以在这个查询中'SELECT [OVER] AS [OVER] _RAN FROM S_3000_7_vt',OVER是表的列名,如果我给SELECT OVER AS OVER_RAN FROM S_3000_7_vt)它将OVER视为子句@Thomas – vm101