跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 请教诸位 sql 的问题,关于实现多个字符模糊匹配,最终结果按自定义的字符分类汇总
未分類
30 3 月 2021

请教诸位 sql 的问题,关于实现多个字符模糊匹配,最终结果按自定义的字符分类汇总

请教诸位 sql 的问题,关于实现多个字符模糊匹配,最终结果按自定义的字符分类汇总

資深大佬 : vtea 3

请教诸位 sql 的问题,关于实现多个字符模糊匹配,最终结果按自定义的字符分类汇总

其实也是记录一下自己的思考过程,也请教大家有没更好的方法

现有表 test,<del>字段 ct 包含 aa,ab,abc,bc,c ;字段 no 包含 1,2,3,4,5 。</del> 如下:

no ct
1 aa
2 ab
3 abc
4 bc
5 c

想模糊检索的字符是包含 a 或 b,然后结果分类汇总展示 a 有几个,b 有几个

我首先想到下面这个语句

select ct,count(no) from test where ct like ‘%a%’ or ct like ‘%b%’ group by ct

但这样结果会是

ct count(no)
aa 1
ab 1
abc 1
bc 1

而我想要实现结果是

count(no)
a 3
b 3

<del>于是我在想新建一个数组,包含 a,b 。结果行不通。</del>

然后想到新建临时表 test1 字段 ct1 包含 a,b,如下

ct1
a
b

可以这样实现

select test1.ct1,count(no) from test,test1 where test.ct like test1.ct1 group by test1.ct1

因为这样比较麻烦,后来发现写多条算了,然后用 union all 合并

select ‘a’,count(no) from test where ct like ‘%a%’ union all select ‘b’,count(no) from test where ct like ‘%b%’

不知大家还有什么更好的办法来实现?实现主要还是只用 sql 语言,因为公司的数据库用的 oracle,做一些临时报表用的 PL/SQl 写语句

大佬有話說 (2)

  • 資深大佬 : c6h6benzene

    其实你应该只是要看这些字符串 INSTR(ct, ‘a’)>0 和 INSTR(ct, ‘b’)>0 的数量?

  • 主 資深大佬 : vtea

    @c6h6benzene 举的例子是这样,实际并不是,因为字符很多,所以很是麻烦

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具