首页 > 数据库 > mysql教程 > 如何使用 CTE 在 SQLite 中有效拆分逗号分隔的字符串?

如何使用 CTE 在 SQLite 中有效拆分逗号分隔的字符串?

DDD
发布: 2024-12-31 06:08:13
原创
974 人浏览过

How to Efficiently Split Comma-Separated Strings in SQLite Using CTEs?

使用 SQLite 的通用表表达式拆分逗号分隔值

问题:

如何我毫不费力地在 SQLite 的 Category 列中分割了一个逗号分隔的字符串 桌子?我寻求一种比使用 Replace() 和 Trim() 更简单的方法,并避免 substr() 的限制。

答案:

SQLite 提供了一个称为 Common Table 的功能允许递归查询的表达式 (CTE),可以方便地拆分逗号分隔值。下面是细分:

查询:

WITH split(word, csv) AS (
  SELECT '', 'Auto,A,1234444'||','
  UNION ALL
  SELECT substr(csv, 0, instr(csv, ',')), substr(csv, instr(csv, ',') + 1)
  FROM split
  WHERE csv != ''
)
SELECT word FROM split
WHERE word!='';
登录后复制

解释:

  • '初始查询': 使用包含空字符串和以逗号分隔的字符串以额外的逗号结尾。
  • '递归查询': 递归选择直到下一个逗号的单词以及字符串的剩余部分,不断分割它直到不再有逗号
  • '最终查询': 过滤掉初始空行和终端分割结果中的逗号。

输出:

Auto
A
1234444
登录后复制

以上是如何使用 CTE 在 SQLite 中有效拆分逗号分隔的字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板