首页 > 解决方案 > Openquery where 子句使用多个like

问题描述

我正在尝试使用多个Where子句运行 Openquery,NOT LIKE但给了我错误

“错误:MALFORMED_QUERY,行:15:列:16 意外标记处的错误:喜欢”。

我试图运行的是这样的

SELECT  *   from openquery(Server, 'Select Id
        , BodyLength
        , ContentType
        , CreatedById
        , CreatedDate
        , Description
        , IsPrivate
        , LastModifiedById
        , LastModifiedDate
        , Name
        , OwnerId
        , ParentId
        from Attachment
        where LastModifiedDate > 2018-11-16T00:00:00Z
        and (Name NOT like (''SML -%'') and
        Name NOT like (''EARLY -%'') and
        Name NOT like (''DELAYED -%'') and
        Name NOT like (''CLOSED -%'') and
        Name NOT like (''CLOSURE -%'') and
        Name NOT like (''OUTAGE -%'') and
        Name NOT like (''MISC -%'') and
        Name NOT like (''TIME AS A CONTROL%'') and
        Name NOT like (''TEMPORARY -%''))
        order by Id
        LIMIT 10000') x

我想要的是排除所有以 Name 开头的记录。当不按名称排除时,它运行顺利,但我真的需要它。有任何想法吗?

标签: sqlsql-server

解决方案


可能问题是您的日期常数,而不是like. 它需要分隔符:

where LastModifiedDate > ''2018-11-16T00:00:00Z'' and
      (Name NOT like ''SML -%'' and
       Name NOT like (''EARLY -%'') and
       . . .
      )

推荐阅读