【问题标题】:How SQL/sqlite wildcars work? LIKE operatorSQL/sqlite 通配符如何工作? LIKE 运算符
【发布时间】:2012-04-10 16:05:08
【问题描述】:

sqlite 中的通配符如何工作。或者LIKE 运算符如何匹配。 例如让我们说:

1:LIKE('s%s%', 's12s12')
2:LIKE('asdaska', '%sk%')

在第一个示例中,在第一个 s 之后匹配什么 %,以及它如何决定在 % 之后继续匹配 % 或 s
在第二个示例中,如果 s 首先匹配,则返回 FALSE
两个示例都返回 TRUE。根据我的编程知识,我想出 LIKE 函数有点像递归函数,当出现 2 种可能性时,函数会使用 2 个不同的参数调用自身并在它们之间使用 OR,那么显然如果一个调用返回 true,上层函数直接返回true。如果是这样,那么 LIKE 运算符在大型数据库上使用起来很慢。 附言还有一个 '_' 通配符可以完全匹配一个字符
我找不到任何 LIKE 运算符的详细文档。

【问题讨论】:

    标签: sql sqlite wildcard sql-like


    【解决方案1】:

    % 匹配零个或多个字符,_ 恰好匹配一个。

    您的第一个模式 's%s%' 将匹配 'ss''s1s''s1111s''ss1111' 等。

    但是,如果您写了's_s_',它将匹配's1s1',但以上都不匹配。

    【讨论】:

    • 我知道确实如此,但是 LIKE 函数的行为如何,函数如何决定是否匹配每个字符?
    • 我的意思是,它如何决定是否匹配 reg。表达式到当前字符或下一个表达式到字符
    • 很遗憾地知道您必须有权访问源代码的详细信息。但是它可能会像任何正则表达式模式匹配器一样工作。
    猜你喜欢
    • 1970-01-01
    • 2021-08-30
    • 1970-01-01
    • 2012-12-15
    • 2013-02-08
    • 2013-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多