【问题标题】:SQL 'Like' function - ClarificationSQL 'Like' 函数 - 澄清
【发布时间】:2020-04-07 08:53:22
【问题描述】:

在下面的查询中,结果是1。我的疑问是为什么第一个条件不满足?

我认为这两种情况只是反之亦然,所以不应该满足第一种情况吗?

我在这里做错了什么?

查询:

select case when '%G24F_T15%' like '%TK_G24F_T15_DITPG204A15WA%'
then 0
when '%TK_G24F_T15_DITPG204A15WA%' like '%G24F_T15%'
then 1
end as abc

【问题讨论】:

  • 为什么你认为like 操作符是对称的? match_expressionpatterndocumentation 中有非常不同的描述
  • LIKE 将在左侧搜索右侧匹配,而不是相反。通配符只能在右侧使用,如果出现在左侧将被视为文字字符串

标签: sql sql-server function sql-like azure-sql-managed-instance


【解决方案1】:

Like 不是对称的,因此左侧的 % 符号按字面意思理解。也就是说,它们被视为 % 符号,而不是模式匹配命令。

help page 的语法:

-- Syntax for SQL Server and Azure SQL Database  

match_expression [ NOT ] LIKE pattern [ ESCAPE escape_character ]  

两侧不一样——只有右侧可以有模式匹配符号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-10
    • 2018-11-21
    • 2014-06-04
    • 2020-11-19
    相关资源
    最近更新 更多