SQL计算字符串里的子字符串出现个数
在某个页面,需要显示每条记录中有几个图片文件。图片文件名列表存储在mysql表里的photo_files字段,文件名之间用一个空格分开。类似'images\rpt201503121.jpg images\rpt201503122.jpg images\rpt201503123.jpg'这样。
现在的问题是,如何在mysql 的 sql 语句里计算每条记录存储了几个图片文件。——其实转换为计算字符串里空格的数量。
mysql的sql语句并不支持正则表达式函数(或者说极其有限),因此最容易想到的是用sql取出来后用PHP的explode函数放到数组里,计算数组元素个数就知道图片文件个数了。但有没有更简单的办法呢?
我的方法是:
select 1+length(photo_files)-length(replace(photo_files,' ','')) from ........
其实就是把空格换成空字符,计算变化前后的长度差,再+1,即可。这样,就不需要写额外的php代码了。
同样的原理,可以推广到计算子字符串在母字符串里的发生个数(上述查询结果再除以子字符串的长度)。
SQL计算字符串里的子字符串出现个数的更多相关文章
- java查找字符串里与指定字符串相同的个数
public class EmployeeDemo { //方法一: public int search(String str,String strRes) {//查找字符串里与指定字符串相同的个数 ...
- 如何在 JavaScript 中检查字符串是否包含子字符串?
如何在 JavaScript 中检查字符串是否包含子字符串? // var test4 = _.includes(string, substring); 该方法需要此文件 <script src ...
- js截取两个字符串之间的子字符串
// 截取两个字符串之间的子字符串,返回第一个 function subStringOne(text, begin, end) { var regex; if (end == '\\n') regex ...
- leetcode 1593. 拆分字符串使唯一子字符串的数目最大(DFS,剪枝)
题目链接 leetcode 1593. 拆分字符串使唯一子字符串的数目最大 题意: 给你一个字符串 s ,请你拆分该字符串,并返回拆分后唯一子字符串的最大数目. 字符串 s 拆分后可以得到若干 非空子 ...
- Java中String类常用方法(字符串中的子字符串的个数)
重点内容 4种方法: 1.int indexOf(String str)返回第一次出现的指定子字符串在此字符串中的索引. 2.int indexOf(String str, int startInde ...
- js实现截取或查找字符串中的子字符串
获取 答案: var string0="sss.sscdyfasdfdgfg";//sscdy获取 ,); 答案是采用substr方法. 定义和用法:substr方法用于返回一个从 ...
- python判断字符串是否包含子字符串
python的string对象没有contains方法,不可以使用string.contains的方法判断是否包含子字符串,但是python有更简单的方法来替换contains函数 python的st ...
- 求两个字符串最大的子字符串C#
此代码由Java改写而来,字符串支持中文格式的. string str1 = "中国ab-15"; string str2 = "中国ab-23"; byte[ ...
- C# 截取两个字符串中间的子字符串
/// <summary> /// 截取中间字符 /// </summary> /// <param name="text">全字符串</ ...
随机推荐
- 汇编语言从入门到精通-5微机CPU的指令系统2
微机CPU的指令系统 5.2.2 标志位操作指令 标志位操作指令是一组对标志位置位.复位.保存和恢复等操作的指令. 1.进位CF操作指令 a.清进位指令CLC(Clear Carry Flag):CF ...
- C++ 类型、类型转换
C++ 数据类型 基本内置类型 字面值常量和字面值类型 类类型 隐式的类类型转换 聚合类 字面值常量类 constexpr 构造函数 类的静态成员 使用编程语言进行编程时,需要用到各种变量来存储各种信 ...
- Java基础 -1.3
CLASSPATH 为了 可以在不同的目录中都可以执行d:\java\Hello.class文件 只能够依靠CLASSPATH环境变量 在cmd中 SET CLASSPATH = d:\java 当设 ...
- DRF项目之层级关系
一共分为四层关系. 第一层:视图 用来接收前端传递的参数,并实现业务逻辑相关的数据处理,并将数据通过创建序列化器对象的形式传递给序列化器. 第二层:序列化器 接收前端传递的数据,并将数据进行序列化操作 ...
- uniGUI之FirDAC(13)
// uses FireDAC.Phys.SQLite 之后, 可不用添加 TFDPhysSQLiteDriverLink //访问SQLite 文件数据库 procedure TMainForm.U ...
- 110、Java中String类之字符串文本拆分
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- 为什么不要在MySQL中使用UTF-8编码方式
MySQL的UTF-8编码方式 MySQL 从 4.1 版本开始支持 UTF-8,也就是 2003 年,然而目前流行的UTF-8 标准(RFC 3629)是在此之后规定的.正因此,才造就了MySQL中 ...
- 五子棋C#源码,网络对战版---转载--待学习
五子棋C#源码,网络对战版 支持网络对战的C#五子棋源码下载,VS2010环境编译后可运行,需要先输入ip地址才行,不是单机版的.部分代码摘录如下://将接收的消息转换成自定义集合MessClass ...
- 重大消息:华为笔记本电脑开始用LINUX系统
对华为而言,此举不失为一个明智的抉择.在手机操作系统领域,目前已被苹果的IOS系统和谷歌的安卓系统垄断.而IOS系统是封闭式,只为苹果手机使用:安卓是开放性,当谷歌与华为停止合作后.华为手机将无法使用 ...
- jQuery Validation Engine(三) 基本常识
1:response.validateFail(fieldId, "机构英文名已被其他人使用"); //field为这个字段的id,”“ 双引号的内容,是提示语 <!DOCT ...