SQL 如何在 WHERE 子句中添加 3 个或更多条件?

SQL how do I add 3 or more conditions into the WHERE clause?

我认为只要在 WHERE 子句中添加 AND,只要所选列与 WHERE 子句匹配,我就可以无限添加条件。但是,以下查询:

No matching signature for operator AND for argument types: BOOL, BOOL, STRING. Supported signature: BOOL AND ([BOOL, ...]) at [8:3]

SELECT
  DISTINCT state,
  country,
  city
FROM
  customer_data.customer_address
WHERE
  TRIM(state) = 'OH' 
  AND LENGTH(country) > 2
  AND SUBSTR(city,1,5)

如果我要删除最后一行,它不会显示任何错误,我可以 运行 查询但是为什么添加另一个条件 return 这样的错误?

是的,您可以将如此多的逻辑操作与 WHERE 子句结合使用,但是, 你的 SUBSTR 是一个字符串 return 所以你必须将它与某些东西进行比较, SQL 服务器在我的例子中试图表现得像 `Bool 所以它会显示错误消息意味着结果是不是布尔值,而是 non-boolean:

Msg 4145, Level 15, State 1, Line 13 An expression of non-boolean type specified in a context where a condition is expected, near ')'.

要修复它,您必须将它与某些东西进行比较,假设 return 字符串等于 'abcde'

这是我使用 SQL 服务器的查询:

SELECT
    DISTINCT state,
    country,
    city
FROM
    tbl_Test2
WHERE
    TRIM(state) = 'OH'
    AND  LEN(country) > 2
    AND SUBSTRING(city,1,5) = 'abcde'