mirror of
https://github.com/aljazceru/turso.git
synced 2026-02-21 16:05:17 +01:00
Make LIKE expressions case-insensitive
This commit is contained in:
1
Cargo.lock
generated
1
Cargo.lock
generated
@@ -1078,6 +1078,7 @@ version = "0.26.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "afc22eff61b133b115c6e8c74e818c628d6d5e7a502afea6f64dee076dd94326"
|
||||
dependencies = [
|
||||
"cc",
|
||||
"pkg-config",
|
||||
"vcpkg",
|
||||
]
|
||||
|
||||
@@ -1968,7 +1968,7 @@ fn exec_char(values: Vec<OwnedValue>) -> OwnedValue {
|
||||
}
|
||||
|
||||
fn construct_like_regex(pattern: &str) -> Regex {
|
||||
let mut regex_pattern = String::from("^");
|
||||
let mut regex_pattern = String::from("(?i)^");
|
||||
regex_pattern.push_str(&pattern.replace('%', ".*").replace('_', "."));
|
||||
regex_pattern.push('$');
|
||||
Regex::new(®ex_pattern).unwrap()
|
||||
|
||||
@@ -22,6 +22,19 @@ do_execsql_test where-like {
|
||||
} {4|sweater|25.0
|
||||
5|sweatshirt|74.0}
|
||||
|
||||
do_execsql_test where-like-case-insensitive {
|
||||
select * from products where name like 'SWEAT%';
|
||||
} {4|sweater|25.0
|
||||
5|sweatshirt|74.0}
|
||||
|
||||
do_execsql_test where-like-underscore {
|
||||
select * from products where name like 'sweat_r';
|
||||
} {4|sweater|25.0}
|
||||
|
||||
do_execsql_test where-like-underscore-case-insensitive {
|
||||
select * from products where name like 'SwEaT_R';
|
||||
} {4|sweater|25.0}
|
||||
|
||||
do_execsql_test where-like-fn {
|
||||
select * from products where like('sweat%', name)=1
|
||||
} {4|sweater|25.0
|
||||
|
||||
Reference in New Issue
Block a user