在开发过程中,有时候需要查询出以某个字符串开头的所有数据。下面来给大家介绍介绍:
知识点:
以某个字符串开头或不以某个字符串开头
方式1用like
这里查询以1101开头
![](https://img-blog.csdnimg.cn/img_convert/3f4603def73248ee9f95c0a23bae1997.png)
这里查询不以1101开头
![](https://img-blog.csdnimg.cn/img_convert/9459de3994cc480681dab3bb0f8fa6df.png)
方式2用left
这里查询以1101开头
![](https://img-blog.csdnimg.cn/img_convert/bb0eaab7e5614fbfaa23bb9d628ce672.png)
4为字符串长度(‘1101‘的长度)
这里查询不以1101开头
![](https://img-blog.csdnimg.cn/img_convert/877f3993b1ce48d3a1748cd17f53bff1.png)
这里肯定有人问了:要是查询的是前台传来的参数,不知道长度,怎么办?
mysql中有计算字符串长度的方法
方法1: length(str)
![](https://img-blog.csdnimg.cn/img_convert/966d0924805343d091131412a86d7de8.png)
方法2:CHAR_LENGTH(str)
![](https://img-blog.csdnimg.cn/img_convert/4f3c6575a2ae4c4d891c1ae5d4e59e10.png)
改进后:
![](https://img-blog.csdnimg.cn/img_convert/49ff46e198dc4a8d938db2fdd38b6805.png)
注:这俩虽然都能查询出字符串长度,但对中文查询的结果是不一样的。SELECT LENGTH('我说你');方法是一个中文对3个;SELECT CHAR_LENGTH('我说你');方法是一个中文对1个。
![](https://img-blog.csdnimg.cn/img_convert/82f88794e8ef4cd3988eb366a4ed09dc.png)
![](https://img-blog.csdnimg.cn/img_convert/6fead1d2b8cd42c3afeb152e7d8a891e.png)
如果查询的为用逗号分割的字符串列表
如图这种数据
![](https://img-blog.csdnimg.cn/img_convert/1f5a1b247e8f457fa0762a256164332b.png)
可以使用
FIND_IN_SET方法。
语法:FIND_IN_SET(needle, haystack);
needle:需要查找的字符串
haystack:以逗号分割的字符串数据
![](https://img-blog.csdnimg.cn/img_convert/7a9a43b741c74a378aa57815cebebc5e.png)
改进
![](https://img-blog.csdnimg.cn/img_convert/5d33af27f34a4570b1b5a7b44eb2376d.png)