ecodeclub / eorm

简单 ORM 框架
Apache License 2.0
194 stars 64 forks source link

eorm: LIKE 查询 #103

Closed flycash closed 1 year ago

flycash commented 1 year ago

仅限中文

使用场景

在搜索列的时候,我们会考虑检索字符串是否符合某个特征,在这种情况下,我们可以考虑使用 LIKE 查询。 例如:

SELECT * FROM XXX WHERE XXX LIKE '%abc'

行业分析

LIKE 查询在很多中间件里面都提供了支持,并且它们还进一步封装了:

可行方案

提供一个 LIKE 调用,接近于 #101 #102 中的设计:

C("name").Like("abc")
C("name").NotLike("abc")

这里 Like 和 NotLike 接收字符串类型。另外就是我们也不对 name 的类型进行校验,例如即便用户使用的是 int 类型,他要用 Like 也是可以的。

其它

任何你觉得有利于解决问题的补充说明

你使用的是 eorm 哪个版本?

你设置的的 Go 环境?

上传 go env 的结果

Stone-afk commented 1 year ago

C("name").Like("abc") 怎么体现是前缀和后缀的,这种用户要如何指定,如果用户要%abc%这种呢,还是说为了性能考虑直接不支持后两种

flycash commented 1 year ago

用户需要自己指定 %。也就是实际上如果用户希望是前缀,它得自己写 Like("abc%")。就是说,我们不会自动帮它把 % 加上去。

Stone-afk commented 1 year ago

所以这里应该是不管 前后缀都是用户自己去指定的例如 C("name").Like("%abc"),C("name").Like("abc%"), C("name").Like("%abc%") 是吗

flycash commented 1 year ago

对的。后续可以考虑辅助方法,不过核心接口就保持简洁,并不引入额外的复杂度

Stone-afk @.***>于2022年11月10日 周四下午8:48写道:

所以这里应该是不管 前后缀都是用户自己去指定的例如 C("name").Like("%abc"),C("name").Like("abc%"), C("name").Like("%abc%") 是吗

— Reply to this email directly, view it on GitHub https://github.com/gotomicro/eorm/issues/103#issuecomment-1310231355, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACLWZ7QJORGU3YNETHDCCP3WHTVKRANCNFSM6AAAAAARZ72DGU . You are receiving this because you authored the thread.Message ID: @.***>