1
0
mirror of https://github.com/astaxie/beego.git synced 2024-11-23 20:40:55 +00:00

add a new mysql operator for force case sensitie query

This commit is contained in:
CadenGuo 2020-08-31 03:40:18 +00:00
parent 8736ffaf6f
commit 60bb057783
No known key found for this signature in database
GPG Key ID: 047A2EAA8F2CFF93
3 changed files with 19 additions and 9 deletions

View File

@ -38,6 +38,7 @@ var (
operators = map[string]bool{
"exact": true,
"iexact": true,
"strictexact": true,
"contains": true,
"icontains": true,
// "regex": true,
@ -1202,7 +1203,7 @@ func (d *dbBase) GenerateOperatorSQL(mi *modelInfo, fi *fieldInfo, operator stri
}
sql = d.ins.OperatorSQL(operator)
switch operator {
case "exact":
case "exact", "strictexact":
if arg == nil {
params[0] = "IS NULL"
}

View File

@ -22,8 +22,9 @@ import (
// mysql operators.
var mysqlOperators = map[string]string{
"exact": "= BINARY ?",
"exact": "= ?",
"iexact": "LIKE ?",
"strictexact": "= BINARY ?",
"contains": "LIKE BINARY ?",
"icontains": "LIKE ?",
// "regex": "REGEXP BINARY ?",

View File

@ -822,6 +822,14 @@ func TestOperators(t *testing.T) {
throwFail(t, err)
throwFail(t, AssertIs(num, 1))
num, err = qs.Filter("user_name__strictexact", "Slene").Count()
throwFail(t, err)
throwFail(t, AssertIs(num, 0))
num, err = qs.Filter("user_name__strictexact", "slene").Count()
throwFail(t, err)
throwFail(t, AssertIs(num, 1))
num, err = qs.Filter("user_name__contains", "e").Count()
throwFail(t, err)
throwFail(t, AssertIs(num, 2))