此TSQL查询中的语法错误在哪里?
下面的TQL查询是从我正在使用的工具生成的,但在执行时,在“LIKE”附近出现语法错误。我似乎不明白问题出在哪里。有人知道怎么了吗 SQL Management Studio的错误是“Msg 156,级别15,状态1,第17行关键字'LIKE'附近的语法不正确。”此TSQL查询中的语法错误在哪里?,tsql,Tsql,下面的TQL查询是从我正在使用的工具生成的,但在执行时,在“LIKE”附近出现语法错误。我似乎不明白问题出在哪里。有人知道怎么了吗 SQL Management Studio的错误是“Msg 156,级别15,状态1,第17行关键字'LIKE'附近的语法不正确。” 选择COUNT\u BIG(*) 从[HistoryReport]起,作为t0 其中(10)和 (如有)( (当(t0.[CategoryValue]为空时的情况) 然后无效 ELSE较低(t0.[CategoryValue]) 结束
选择COUNT\u BIG(*)
从[HistoryReport]起,作为t0
其中(10)和
(如有)(
(当(t0.[CategoryValue]为空时的情况)
然后无效
ELSE较低(t0.[CategoryValue])
结束)为空
)
然后无效
否则(
(当(t0.[CategoryValue]为空时的情况)
然后无效
ELSE较低(t0.[CategoryValue])
结束)如“U”+“%”
)
(完)
有几件事很奇怪,您正在测试一个值是否为null,如果为null则返回null,如果为null则返回值。然后,您将再次检查代码分支中的空值,该分支仅在值绝对不为空时执行。有点不必要,而且非常混乱。此外,我怀疑您与NULL
的比较不会像您想象的那样有效,因为NULL 0
在默认情况下将计算为NULL
顺便说一句:通常,在SQL SERVER中,字符串不区分大小写(除非您使用区分大小写的排序规则配置列或服务器,这在某种程度上是不常见的)
我正在努力弄明白你的真正意思,这里是一个语法正确的版本,我认为你在尝试做什么:
SELECT COUNT_BIG(*)
FROM [HistoryReport] AS t0
WHERE (1 <> 0 AND LOWER(t0.categoryValue) like 'U' + '%')
而且:
那么result_expression是在
当_表达式的计算结果为TRUE时,输入_表达式等于,或
布尔_表达式的计算结果为TRUE。结果表达式是任何有效的
表情
你对
LIKE
的理解似乎应该是一个有效的表达式,但似乎LIKE
处于有效运算符的边缘。你得到了什么错误消息?我编辑了原始问题并添加了错误消息。这是什么工具?生成的查询看起来非常糟糕且无法组织。您正在匹配什么?我是说你的目标是什么?好吧,那太难看了。您试图实现什么逻辑,可能需要两行代码才能完成……感谢您的详细解释。我还没有找出错误的原因,但我认为你提供的信息可能包含一些线索。
SELECT COUNT_BIG(*)
FROM [HistoryReport] AS t0
WHERE (1 <> 0 AND LOWER(t0.categoryValue) like 'U' + '%')
Simple CASE expression:
CASE input_expression
WHEN when_expression THEN result_expression [ ...n ]
[ ELSE else_result_expression ]
END
Searched CASE expression:
CASE
WHEN Boolean_expression THEN result_expression [ ...n ]
[ ELSE else_result_expression ]
END