2016-01-21 86 views
0

我试图找出为什么我得到这个错误MSSQL 2012附近有语法错误“>”

附近有语法错误“>”

我比较2个整数和甚至当我用最简单的形式,我仍然得到错误信息

select 1 >= 0 

select cast(1 as int) >= cast(0 as int) 

是否有需要设置为可以使用大于或等于的配置?

+0

请检查'CASE WHEN'和'WHERE'语法 – Devart

+1

您希望这个返回什么? SQL Server没有布尔类型(尽管'BIT'通常是作为选择的) – DavidG

+0

我期待1或0的位,但似乎我不会得到它。 – freddoo

回答

2
SELECT IIF(1 >= 0, 'YES', 'NO') -- 2012+ 

SELECT CASE WHEN 1 >= 0 THEN 'YES' ELSE 'NO' END 

IF 1 >= 0 
    SELECT 'YES' 
ELSE 
    SELECT 'NO' 
+0

我确实找到了这个'解决方法',但我试图不使用IIF,为什么它在IIF中工作,而不是在代码中,它仍然返回一个布尔值供IIF评估。 – freddoo

+2

您无法选择比较。您只能选择某种类型的值。计算结果,列,表达式,但不是比较。尽管在许多编码语言中,您会将它看作是TRUE或FALSE的值,但在SQL中并非如此。您必须亲自评估比较,然后选择值。这就是Devart的方法运作的原因。 –

+0

这将解释为什么它在where子句中起作用,但如果它不能被选中,我将使用IIF – freddoo