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

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

DDD
DDD原创
2024-12-31 06:08:13985浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn