袁来如此的工作笔记
袁来如此的工作笔记
竹杖芒鞋轻胜马,谁怕? 一蓑烟雨任平生。

mysql中如何实现sql的charindex功能,匹配子串开始位置的函数

浏览量:1143

LOCATE(STR1,STR)、POSITION(STR1 IN STR)、INSTR(STR,STR1)3个函数作用相同,

返回子字符串str1在字符串str中的开始位置


这三个函数跟SQLSERVER里的CHARINDEX()函数功能类似


mysql中INSTR函数的用法

INSTR(字段名, 字符串)


这个函数返回字符串在某一个字段的内容中的位置, 没有找到字符串返回0,否则返回位置(从1开始)


SELECT * FROM tblTopic ORDER BY INSTR( topicTitle, 'ha' ) > 0 DESC


SELECT INSTR( topicTitle, 'ha' ) FROM tblTopic


 


mysql中使用instr配合IN排序


将instr结果作为一列,按其排序


select id,1 from world_guide where id = 32

union

select * from

(select id, instr('30,35,31,',id+',') as d from

world_blog where id in (30,35,31) order by d) as t;

输出


+----+---+

| id | 1 |

+----+---+

| 32 | 1 |

| 30 | 1 |

| 35 | 4 |

| 31 | 7 |

+----+---+

4 rows in set, 6 warnings (0.02 sec)

 


 


表A  

字段:姓名 name

  张三

  王五

表B

字段:标题 title  

  信息一 张三发布

  信息二 王五发布

  信息三 张三发布


排行榜,按表A的姓名 like %‘name’% 匹配 表B的 title 的条数进行排序,


排行榜样例


张三 2

王五 1


select 姓名,count(b.title) from a inner join b on instr(b.title,a.姓名)>0

group by 姓名

order by count(b.title)

 

select name,(select count(*) from 表B where instr(title,表A.name)

from 表A 

order by 2 desc


打赏