【问题标题】:Missing Operator in query expression in MS AccessMS Access 中的查询表达式中缺少运算符
【发布时间】:2020-02-22 02:00:08
【问题描述】:

我正在尝试运行一个查询,该查询返回地址列中空格之前的字母

SELECT col1,(Case When CHARINDEX(' ',address) = 0 then address Else LEFT(address,CHARINDEX(' ',address)-1) END) as streetNumber from table1
where stateID = 15

当我在 SQL Server Management Studio 中运行此查询时,它会运行,但在 Access 中运行它会给我:

查询表达式 '(Case WHEN) 中的语法错误(缺少运算符) CHARINDEX(' ',address) =0 然后地址 Else LEFT(address,CHARINDEX(' ',地址)-1) END)

但是没有缺少运算符。我不确定为什么会收到此错误。

【问题讨论】:

  • Access 无法处理查询中的 CASE。使用 IIf() 或 Switch() 或 Choose()。另外,CharIndex() 也可能没有被确认。
  • Access SQL 和 SQL Server SQL 是不一样的,所以在 SQL Server Management Studio (SSMS) 中你能做什么与任何事情都没有关系。 Access 有自己的各种 SQL,您不能使用它不支持的功能,例如 CASECHARINDEX。您需要改用 Access 支持的语法。 SSMS 仅适用于 SQL Server,SQL Server SQL 支持的内容与任何其他 SQL 变体无关。
  • ^他们写的。如果您想/需要使用 SQL Server 语法,则可以改用 Pass-Through 查询。结果将是只读的。

标签: ms-access


【解决方案1】:

使用 Access SQL 和 VBA:

Select 
    col1,
    IIf(InStr([address], ' ') = 0, [address], Left([address], InStr([address], ' ') - 1)) As streetNumber 
From 
    table1
Where 
    stateID = 15

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 1970-01-01
    • 2019-07-18
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多