Fra*_*isc 56 sql sqlite sql-like
我无法弄清楚下划线字符在SQLite like语句中的作用.通配符%可能与大多数其他SQL数据库中的相同.
那个该死的_角色做了什么?
Ben*_*oit 83
它是LIKE表达式中的标准SQL :
%匹配任何字符序列,包括空字符.它相当于.*正则表达式._匹配单个字符.它相当于.正则表达式.你可以选择一个逃脱的角色%,_它本身就是:
... WHERE expr LIKE 'a_b%c\\d\%\_' ESCAPE '\'
Run Code Online (Sandbox Code Playgroud)
这将匹配a×b×××c\d%_或a×bc\d%_而不是abc\d%_也不a×b×××cd%_.
另外,与SQLite一起使用的GLOB关键字行为完全相同,除了%变为*和_变为?.
mu *_*ort 62
下划线也与大多数其他SQL数据库中的相同,并匹配任何单个字符(即它与.正则表达式中的相同).从精细手册:
LIKE模式中的下划线("_")匹配字符串中的任何单个字符.
例如:
-- The '_' matches the single 'c'
sqlite> select 'pancakes' like 'pan_akes';
1
-- This would need '__' to match the 'ca', only one '_' fails.
sqlite> select 'pancakes' like 'pan_kes';
0
-- '___' also fails, one too many '_'.
sqlite> select 'pancakes' like 'pan___kes';
0
Run Code Online (Sandbox Code Playgroud)
并且只是为了确保结果有意义:SQLite使用0和1来表示布尔值.
@Benoit回答的附录:
在ESCAPE适用于最近的LIKE表现,并不是所有的LIKE表情.要逃避所有,你必须ESCAPE多次使用,如下所示.
WHERE foo LIKE '%bar^%%' ESCAPE '^' AND foo LIKE '%baz^_%' ESCAPE '^'
Run Code Online (Sandbox Code Playgroud)
此谓词匹配的值foo包含bar%,或baz加上任何字符.
| 归档时间: |
|
| 查看次数: |
94200 次 |
| 最近记录: |