按照指定的位置截取字符

需求描述

需求:按照逗号拆分字符串,取拆分出来的第二个子串.

解决方法:这里需要自定义函数结合substring截取字符串,以达到该效果.

注: 数据库数据集SQL脚本详见如下链接地址

员工表结构和数据初始化SQL脚本

SQL代码

--SQL Server:
CREATE FUNCTION strSplitIndex
( @str VARCHAR(1024),  --要分割的字符串 @split VARCHAR(10),  --分隔符@index INT --要取元素的位置
)
RETURNS VARCHAR(1024)
AS
BEGIN  DECLARE @location INT  DECLARE @start INT  DECLARE @next INT  DECLARE @seed INT  SET @str=LTRIM(RTRIM(@str))  SET @start=1  SET @next=1  SET @seed=LEN(@split)  SET @location=CHARINDEX(@split,@str)  WHILE @location<>0 and @index>@next  BEGIN  SET @start=@location+@seed  SET @location=CHARINDEX(@split,@str,@start)  SET @next=@next+1  END  IF @location =0 SELECT @location =LEN(@str)+1  RETURN SUBSTRING(@str,@start,@location-@start)
END
GOSELECT dbo.strSplitIndex(data,',',1) AS StrSplit FROM
(SELECT 'Hello,World,SQL' AS dataUNION ALL SELECT 'Data,Arithmetic' AS dataUNION ALLSELECT 'Science' AS data)A

执行结果

--或者借助parsename函数:
SELECT PARSENAME(REPLACE(data,',','.'),2) AS StrSplit FROM
(
SELECT 'Hello,World,SQL' AS dataUNION ALL SELECT 'Data,Arithmetic' AS dataUNION ALLSELECT 'Science' AS data
)A
WHERE PARSENAME(REPLACE(data,',','.'),2) IS NOT NULL
--Mysql:
SELECT data,SUBSTRING_INDEX(SUBSTRING_INDEX(data,',',seq.num),',',-1) AS sub,seq.num AS subStrPos
FROM
(SELECT 'Hello,World,SQL' AS dataUNION ALL
SELECT 'Data,Arithmetic' AS dataUNION ALL
SELECT 'Science' AS data) e,
(SELECT i as num FROM tb_incr)seq
WHERE seq.num<=LENGTH(e.data)-LENGTH(REPLACE(e.data,',',''))+1
AND seq.num = 2
ORDER BY data,seq.num

步骤解析:

Step1: 首先借助自增表将data字段里的数据按照逗号的数目切分,如果有2个逗号,则会切分成3部分

Step2: 借助SUBSTRING_INDEX函数截取逗号所在位置的子串,这里鉴于SUBSTRING_INDEX的第三个参数的意义是子串累加,所以又套了个SUBSTRING_INDEX,第三个参数传-1,即从右边截取.

Step3:借助自增表的num,取指定分割位置的数据,这里是2.

注: SUBSTRING_INDEX函数执行示例见下:

SELECT SUBSTRING_INDEX('Hello,World,SQL',',',1) AS SUBSTRING,1 AS pos
UNION ALL
SELECT SUBSTRING_INDEX('Hello,World,SQL',',',2) AS SUBSTRING,2 AS pos
UNION ALL
SELECT SUBSTRING_INDEX('Hello,World,SQL',',',3) AS SUBSTRING,3 AS pos

处理字符串_12_按照指定的位置截取字符相关推荐

  1. 处理字符串_13_按照指定的分隔符截取字符返回表形式

    按照指定的分隔符截取字符返回表形式 需求描述 需求:按照逗号拆分字符串,并指定返回的格式是表. 解决方法:这里需要自定义函数结合substring截取字符串,以达到该效果. 注: 数据库数据集SQL脚 ...

  2. js替换字符串指定索引位置的字符,单字符成指定的多个字符

    js替换字符串指定索引位置的字符,替换掉 String.prototype.replaceAt=function(index, replacement) {return this.substr(0, ...

  3. c#截取字符串指定符号,在.NET中,C#字符串是可截取的,可从指定位置截取,也可指定数量...

    C#核心开发-第16单元-字符串-第2节:截取字符串 C#核心开发-截取字符串 1. 什么是截取字符串? 截取字符串是指在一个比较长的字符串中截取一部分有用.有意义的子字符串. 在C#中,可以使用Su ...

  4. Linux Shell字符串截取(非常详细):#左边开始截取、%右边开始截取、指定位置截取

    演示 Shell 截取字符串通常有两种方式:从指定位置开始截取和从指定字符(子字符串)开始截取. 从指定位置开始截取 这种方式需要两个参数:除了指定起始位置,还需要截取长度,才能最终确定要截取的字符串 ...

  5. java如何使截取字符串_java中如何截取字符串中的指定一部分

    java中如何截取字符串中的指定一部分 关注:136  答案:4  mip版 解决时间 2021-02-06 13:27 提问者妳涐執唸汰深 2021-02-06 08:56 精选 比如 F:\wor ...

  6. Excel怎样从一串字符中的某个指定“字符”前后截取字符及截取字符串常用函数

    原始字符串: 品种在源系统主键(id) 截取前面的    (品种在源系统主键): =LEFT(B3,FIND("(",B3)-1) 截取后面的    (id): =LEFT(RIG ...

  7. Excel怎样从一串字符中的某个指定“字符”前后截取字符及截取字符串常用函数...

    怎么样可以从一串字符中的某个指定位置的前或后截取指定个数的字符. 如:12345.6789,我要截取小数点前(或后)的3个字符.怎么样操作, 另外,怎么样从右边截取字符,就是和left()函数相反的那 ...

  8. 如何截取 EXCEL 单元格中字符串的中间指定部分?

    日常使用 EXCEL 过程中,经常遇到需要批量截取某个字符串中间的特定内容,比如: 需求: 输出 placement 的参数值,也就是 m.olx.ro 解决方案 从文本字符串中指定的位置开始,返回指 ...

  9. 微信小程序JS字符串操作方法汇总,包含切割截取split,合并字符串join,连接字符串concat,返回指定字符串charAt,提取字符串substring等

    微信小程序JS字符串操作方法汇总 JS对字符串进行切割截取 1.函数:split() 功能:使用一个指定的分隔符把一个字符串分割存储到数组 例子: str="jpg|bmp|gif|ico| ...

最新文章

  1. 无线红外探测器02-硬件设计
  2. linux FreeImage安装编译
  3. python【数据结构与算法】内置函数 zip() 函数(看不懂你来打我)
  4. illegal escape character in String literal
  5. 如何使WINCE启动时自动运行应用程序
  6. jpa遇到mysql表名大写怎么办_解决(springboot项目)mysql表名大写,造成jpa Table doesn't exist问题...
  7. VTK:图表之AdjacentVertexIterator
  8. 关于jsp中jstl-core标签循环遍历的使用
  9. Win2003 + SQL 2005 做数据库集群总结(虚拟机)
  10. vba 数组赋值_VBA数组与字典解决方案第31讲:VBA数组声明及赋值后的回填方法
  11. 全文搜索引擎 Elasticsearch 入门(ik,kibana,x-pack)
  12. 【从C到C++学习笔记】程序/结构化程序设计/面向对象的程序设计
  13. java float 运算_java基础之float、double底层运算
  14. android+截图长屏软件,可能是安卓最好用的长截图工具 秒杀各种拼图软件|小安教程...
  15. win7开启telnet工具
  16. 软件开发之文档的重要性
  17. Docker 自动化部署
  18. api文档 luci_Luci介绍
  19. Excel怎么把两列数据穿插合并为一列
  20. SonarQube安装及使用

热门文章

  1. VTK:多数据点用法实战
  2. JavaScript实现QuickSort快速排序算法(附完整源码)
  3. OpenCASCADE:形状愈合之修复
  4. wxWidgets 示例展示了 wxSecretStore 类的使用
  5. wxWidgets:wxPGProperty类用法
  6. boost::spirit模块实现展示不同容器类型的输出格式化的统一和简单的方法
  7. boost::range_category和boost::iterator_category相关的测试程序
  8. boost::ptr_set相关的测试程序
  9. boost::hana::mod用法的测试程序
  10. boost::gil::threshold_adaptive用法的测试程序