SQL 查询子句在哪里

SQL QUERY CLAUS WHERE

我有这个 where 子句

WHERE        (ACCDAT_0 >= '2020-01-01 00:00:00.000')and STA_0='3'
and
(NUM_0 LIKE '%FTC%') OR (NUM_0 LIKE '%NCC%') OR (NUM_0 LIKE '%DCF%')

关键是如果 STA_0='1' 出现在查询中,因为它像 NCC,它可能会出现所有 NCC,除了标志为 1 的那些?

这确实是一条评论,但它太大了,无法放入评论中space...对我上面的评论的详细说明。

“OR”是低优先级运算符,这意味着它在所有“AND”之后计算。这意味着您的查询正在执行此操作:

WHERE
 (ACCDAT_0 >= '2020-01-01 00:00:00.000' and
  STA_0='3' and
  NUM_0 LIKE '%FTC%') OR NUM_0 LIKE '%NCC%' OR NUM_0 LIKE '%DCF%'
  

意味着如果 NUM_0 类似于 NCC 或 DCF,则前两个条件将被忽略。这可能不是你的意思,但你就是这么说的。

你可能是这个意思:

WHERE
  ACCDAT_0 >= '2020-01-01 00:00:00.000' and
  STA_0='3' and
 (NUM_0 LIKE '%FTC%' OR NUM_0 LIKE '%NCC%' OR NUM_0 LIKE '%DCF%')

更大的教训是......如果你混合使用 AND 和 OR,一定要使用括号,这样它就完全符合你的意思。