SQLite单个分隔符分割字符串删除后缀实现很简单

SELECT 'aaa-bbb-ccc-ddd-eee', SUBSTR('aaa-bbb-ccc-ddd-eee', 0, LENGTH(RTRIM('aaa-bbb-ccc-ddd-eee', REPLACE('aaa-bbb-ccc-ddd-eee', '-', ''))));

SQLite多个分隔符分割字符串需要借助递归查询实现

多个分隔符分割字符串递归查询过程:i 记录分隔符坐标位置 input 记录下一次递归查询的字符串 origin 记录原始字符串

当前字符串中无法定位多个分隔符坐标的时候终止递归查询

示例中均是以 '-1' 作为多个分隔符 T_TABLE作为数据库表 COL作为数据库表中一个字段列

WITH SP(i, input, origin) AS (SELECT DISTINCT 1, COL, COL FROM T_TABLE WHERE (LENGTH(COL) - LENGTH(REPLACE(COL, '-1', ''))) / LENGTH('-1') > 0UNIONSELECT INSTR(input, '-1') + LENGTH('-1') - 1, SUBSTR(input, INSTR(input, '-1') + LENGTH('-1')), origin FROM SP WHERE INSTR(input, '-1') != 0
) SELECT i, input, origin FROM SP;

聚合计算出最后一个多字符分割的位置,取出位置之前的子字符串

WITH SP(i, input, origin) AS (SELECT DISTINCT 1, COL, COL FROM T_TABLE WHERE (LENGTH(COL) - LENGTH(REPLACE(COL, '-1', ''))) / LENGTH('-1') > 0UNIONSELECT INSTR(input, '-1') + LENGTH('-1') - 1, SUBSTR(input, INSTR(input, '-1') + LENGTH('-1')), origin FROM SP WHERE INSTR(input, '-1') != 0
) SELECT SUM(i) AS pos, origin, SUBSTR(origin, 0, SUM(i) - LENGTH('-1')) AS substring FROM SP GROUP BY origin;

SQLite多个分隔符分割字符串并删除后缀

WITH SP(i, input, origin) AS (SELECT DISTINCT 1, COL, COL FROM T_TABLE WHERE (LENGTH(COL) - LENGTH(REPLACE(COL, '-1', ''))) / LENGTH('-1') > 0UNIONSELECT INSTR(input, '-1') + LENGTH('-1') - 1, SUBSTR(input, INSTR(input, '-1') + LENGTH('-1')), origin FROM SP WHERE INSTR(input, '-1') != 0
) UPDATE T_TABLE SET COL = (SELECT SUBSTR(b.ORIGIN, 0, b.POS - LENGTH('-1')) FROM (SELECT SUM(i) AS POS, origin AS ORIGIN FROM SP GROUP BY origin) b
WHERE T_TABLE.COL = b.ORIGIN) WHERE (LENGTH(COL) - LENGTH(REPLACE(COL, '-1', ''))) / LENGTH('-1') > 0;

SQLite学习笔记-多个分隔符分割字符串并删除后缀相关推荐

  1. SQLite学习笔记(七)-- 数据插入、更新和删除(C++实现)

    1.代码实例 代码说明 本例主要说明如何对数据表进行插入.更新和删除操作. 测试平台 1.开发语言:C++ 2.开发工具:VS2015 3.操作系统:Win7 X64 测试数据说明 测试表为Stude ...

  2. 2010年SQLite学习笔记之一

    2010年SQLite学习笔记之一 一.            如何获取SQLite最新版本 官方站点:http://www.sqlite.org/ 从http://www.sqlite.org/网站 ...

  3. SQLite学习笔记(八)-- BLOB数据的插入与查询(C++实现)

    1.什么是BLOB数据 BLOB (binary large object)即二进制大对象,是一种可以存储二进制文件的容器.在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型.常见的BLO ...

  4. sqlite学习笔记7:C语言中使用sqlite之打开数据库

    数据库的基本内容前面都已经说得差点儿相同了.接下看看如何在C语言中使用sqlite. 一 接口 sqlite3_open(const char *filename, sqlite3 **ppDb) 打 ...

  5. Sqlite学习笔记(四)SQLite-WAL原理(转)

    Sqlite学习笔记(三)&&WAL性能测试中列出了几种典型场景下WAL的性能数据,了解到WAL确实有性能优势,这篇文章将会详细分析WAL的原理,做到知其然,更要知其所以然. WAL是 ...

  6. MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结

    MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结 一.VARCHAR存储和行长度限制 1.VARCHAR(N)中,N指的是字符的长度,VARCHAR类型最大支持65535,指的是 ...

  7. HALCON 21.11:深度学习笔记---对象检测, 实例分割(11)

    HALCON 21.11:深度学习笔记---对象检测, 实例分割(11) HALCON 21.11.0.0中,实现了深度学习方法. 本章介绍了如何使用基于深度学习的对象检测. 通过对象检测,我们希望在 ...

  8. 2010年SQLite学习笔记之三

    2010年SQLite学习笔记之三 一.如何备份数据库 先打开数据库test.db E:/sqlite/tool/sqlite-3_6_22>sqlite3  D:/Test/debug/tes ...

  9. MySQL 8——学习笔记03(插入、更新、删除 数据 [DML语句]、查询数据 [DQL语句])

    MySQL 8--学习笔记03(插入.更新.删除 数据 [DML语句]) 一.插入数据 1.1 插入所有字段.插入部分字段 1.2 同时插入多条记录(批量插入) 1.3 将查询结果插入到表中 二.更新 ...

最新文章

  1. 几个比较冷门的prototype扩展方法:去掉html标签、去掉a标签、去掉style样式,以及判断是否为html代码的代码片段
  2. response.end
  3. Domino设置多台转发主机地址
  4. Qt编程之QTreeWidget使用方法
  5. redis(nosql数据库)
  6. MyEclipse内存溢出问题
  7. 【矩阵乘法】沼泽鳄鱼(ssl 2511)
  8. 68-Flutter中极光推送的使用
  9. 解决mac 系统软件被阻止载入点允许没反应的问题
  10. java计算集合对称差
  11. shell 脚本空行造成 :not found make.sh:
  12. Java项目源码分享——适合新手练手的Java Web项目
  13. hcfax2e伺服驱动器说明书_伺服电机说明书
  14. 周育如的音标口诀大全_音标记忆顺口溜(48个),快速记忆音标口诀!
  15. nifi集群_nifi架构
  16. 有机酸的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  17. Ubuntu20.04代理设置
  18. 网站中木马病毒了怎么办
  19. HDU 1107 武林 大模拟
  20. MySql中用sql语句实现按汉字首字母排序

热门文章

  1. 2022年熔化焊接与热切割题库及模拟考试
  2. vue+elementui导入、导出excel
  3. 给定一组相关对应的数值,通过for循环使用MATLAB利用一次函数计算出中间的其他数值大小
  4. 2019适合年轻人创业的新项目有哪些?最有前景项目推荐
  5. 东南大学计算机网络课程PPT,东南大学计算机网络复习提纲.ppt
  6. 计算机网络技术项目计划书,学生信息管理系统项目计划书
  7. 计算机时代影视人类学发展,试论影视人类学de历史、现状及其理论框架.pdf
  8. SQL数据库的T-SQL 查询语句
  9. qt4.8.6 基于Phonon的播放器无法播放acc等音频文件解决方法
  10. 网易,数据智能To B行业的破局者