SQL计算字符串里的子字符串出现个数

在某个页面,需要显示每条记录中有几个图片文件。图片文件名列表存储在mysql表里的photo_files字段,文件名之间用一个空格分开。类似‘images\rpt201503121.jpg images\rpt201503122.jpg images\rpt201503123.jpg‘这样。

mysql的sql语句并不支持正则表达式函数(或者说极其有限),因此最容易想到的是用sql取出来后用PHP的explode函数放到数组里,计算数组元素个数就知道图片文件个数了。但有没有更简单的办法呢?

我的方法是:

select rpt_id,rpt_time,.....,1+length(photo_files)-length(replace(photo_files,‘ ‘,‘‘)) filenum from ........

其实就是把空格换成空字符,计算变化前后的长度差,再+1,即可。这样,就不需要写额外的php代码了。

同样的原理,可以推广到计算子字符串在母字符串里的发生个数(需要做个除法)。

时间: 2024-11-03 05:25:48

SQL计算字符串里的子字符串出现个数的相关文章

在父字符串中查找子字符串

在父字符串中查找子字符串(指针控制,也可选择标控制) #pragma once #include<iostream> #include<assert.h> using namespace std; char* StrStr(char* source, char* dest) { assert(source&&dest); if (strlen(source) < strlen(dest)) return NULL; char* newSrc = NULL; c

java查找字符串里与指定字符串相同的个数

public class EmployeeDemo { //方法一: public int search(String str,String strRes) {//查找字符串里与指定字符串相同的个数 int n=0;//计数器 // for(int i = 0;i<str.length();i++) { // // } while(str.indexOf(strRes)!=-1) { int i = str.indexOf(strRes); n++; str = str.substring(i+

python判断字符串是否包含子字符串

python的string对象没有contains方法,不可以使用string.contains的方法判断是否包含子字符串,但是python有更简单的方法来替换contains函数 python的string对象没有contains方法,不可以使用string.contains的方法判断是否包含子字符串,但是python有更简单的方法来替换contains函数 python的string对象没有contains方法,不可以使用string.contains的方法判断是否包含子字符串,但是pyth

LeetCode最小窗口子字符串以及求解子字符串模板

LeetCode原题地址 题干: 给定字符串S和T,以O(n)复杂度在S中找出包含T中所有字符的最小窗口子字符串. 示例: S = "ADOBECODEBANC"T = "ABC" 最小窗口是"BANC". 备注: 如果没有结果,返回空字符串"". 如果有多个窗口,保证只有一个最小解. Discuss中的答案(并且给出了一个求解所有子字符串问题的模板): 原题的解: 1 string minWindow(string s, s

在一个字符串中提取子字符串

一.提取字符串函数int substr(char dst[], char src[], int start, int len): 分析: 源字符串src[]用来提供字符串: 目的字符串dst[]用来接收子字符串: 从src[]的起始位置向后偏移,从start的位置开始最多复制len个字符,当src[]中字符数可以从start个字符开始复制len个字符,那么可以复制len个字符:当从start开始到字符串结束,即遇到'\0'时,小于len个字符,那么只需复制从start开始到字符串结束的字符串.

求两个字符串最大的子字符串C#

此代码由Java改写而来,字符串支持中文格式的. string str1 = "中国ab-15"; string str2 = "中国ab-23"; byte[] char1 = Encoding.UTF8.GetBytes(str1); byte[] char2 = Encoding.UTF8.GetBytes(str2); int len1 = char1.Length; int len2 = char2.Length; string maxchar = &qu

C# 截取两个字符串中间的子字符串

/// <summary> /// 截取中间字符 /// </summary> /// <param name="text">全字符串</param> /// <param name="start">开始字符串 </param> /// <param name="end">结束字符串 </param> /// <returns></r

从字符串中提取子字符串

#include <assert.h> int substr(char dst[], char src[], int start, int len) {  int srcLen = strlen(src);  int left = 0;  assert(dst);  assert(src);  if (srcLen < start)  {   return -1;  }  while (start--)    {   src++;             //指针向后偏移start  }

寻找子字符串——上

第十一章的习题7,刚开始觉得简单,可是实际思考时发现要考虑很多东西,然后脑子就一片混沌了,然后问题一拖一个月,然而时间并没有帮我解决掉问题,问题还是要自己去努力接触才能发展的呀. 有参考答案,上网也找到了答案,昨天验证了下,是对的.自己就是眼高手低,还犟,想凭借自己的"智慧"想出来(别人的我看了觉得费劲,而且很难理解他的思想,他到底是怎么想到的呢).不过不能自负,遇到问题想不出来很正常,就该学习自己想不到的思路,改变自己的思维方式.应该向前人学习,可以先读懂,理解一点是一点,接触多了自