SQLite学习笔记-多个分隔符分割字符串并删除后缀
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学习笔记-多个分隔符分割字符串并删除后缀相关推荐
- SQLite学习笔记(七)-- 数据插入、更新和删除(C++实现)
1.代码实例 代码说明 本例主要说明如何对数据表进行插入.更新和删除操作. 测试平台 1.开发语言:C++ 2.开发工具:VS2015 3.操作系统:Win7 X64 测试数据说明 测试表为Stude ...
- 2010年SQLite学习笔记之一
2010年SQLite学习笔记之一 一. 如何获取SQLite最新版本 官方站点:http://www.sqlite.org/ 从http://www.sqlite.org/网站 ...
- SQLite学习笔记(八)-- BLOB数据的插入与查询(C++实现)
1.什么是BLOB数据 BLOB (binary large object)即二进制大对象,是一种可以存储二进制文件的容器.在计算机中,BLOB常常是数据库中用来存储二进制文件的字段类型.常见的BLO ...
- sqlite学习笔记7:C语言中使用sqlite之打开数据库
数据库的基本内容前面都已经说得差点儿相同了.接下看看如何在C语言中使用sqlite. 一 接口 sqlite3_open(const char *filename, sqlite3 **ppDb) 打 ...
- Sqlite学习笔记(四)SQLite-WAL原理(转)
Sqlite学习笔记(三)&&WAL性能测试中列出了几种典型场景下WAL的性能数据,了解到WAL确实有性能优势,这篇文章将会详细分析WAL的原理,做到知其然,更要知其所以然. WAL是 ...
- MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结
MySQL学习笔记_关于MySQL的字符类型VARCHAR长度知识总结 一.VARCHAR存储和行长度限制 1.VARCHAR(N)中,N指的是字符的长度,VARCHAR类型最大支持65535,指的是 ...
- HALCON 21.11:深度学习笔记---对象检测, 实例分割(11)
HALCON 21.11:深度学习笔记---对象检测, 实例分割(11) HALCON 21.11.0.0中,实现了深度学习方法. 本章介绍了如何使用基于深度学习的对象检测. 通过对象检测,我们希望在 ...
- 2010年SQLite学习笔记之三
2010年SQLite学习笔记之三 一.如何备份数据库 先打开数据库test.db E:/sqlite/tool/sqlite-3_6_22>sqlite3 D:/Test/debug/tes ...
- MySQL 8——学习笔记03(插入、更新、删除 数据 [DML语句]、查询数据 [DQL语句])
MySQL 8--学习笔记03(插入.更新.删除 数据 [DML语句]) 一.插入数据 1.1 插入所有字段.插入部分字段 1.2 同时插入多条记录(批量插入) 1.3 将查询结果插入到表中 二.更新 ...
最新文章
- 几个比较冷门的prototype扩展方法:去掉html标签、去掉a标签、去掉style样式,以及判断是否为html代码的代码片段
- response.end
- Domino设置多台转发主机地址
- Qt编程之QTreeWidget使用方法
- redis(nosql数据库)
- MyEclipse内存溢出问题
- 【矩阵乘法】沼泽鳄鱼(ssl 2511)
- 68-Flutter中极光推送的使用
- 解决mac 系统软件被阻止载入点允许没反应的问题
- java计算集合对称差
- shell 脚本空行造成 :not found make.sh:
- Java项目源码分享——适合新手练手的Java Web项目
- hcfax2e伺服驱动器说明书_伺服电机说明书
- 周育如的音标口诀大全_音标记忆顺口溜(48个),快速记忆音标口诀!
- nifi集群_nifi架构
- 有机酸的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- Ubuntu20.04代理设置
- 网站中木马病毒了怎么办
- HDU 1107 武林 大模拟
- MySql中用sql语句实现按汉字首字母排序
热门文章
- 2022年熔化焊接与热切割题库及模拟考试
- vue+elementui导入、导出excel
- 给定一组相关对应的数值,通过for循环使用MATLAB利用一次函数计算出中间的其他数值大小
- 2019适合年轻人创业的新项目有哪些?最有前景项目推荐
- 东南大学计算机网络课程PPT,东南大学计算机网络复习提纲.ppt
- 计算机网络技术项目计划书,学生信息管理系统项目计划书
- 计算机时代影视人类学发展,试论影视人类学de历史、现状及其理论框架.pdf
- SQL数据库的T-SQL 查询语句
- qt4.8.6 基于Phonon的播放器无法播放acc等音频文件解决方法
- 网易,数据智能To B行业的破局者