You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用SQL查询逐行打印单词"hello"的每个字符(非PL/SQL)

纯SQL实现单词逐字符分行打印

没问题,这里给你几个不同数据库下的纯SQL解决方案,完全不用PL/SQL就能把"hello"的每个字符单独占一行输出~

Oracle 实现方案

这应该是最常用的写法,利用Oracle自带的CONNECT BY语法就能轻松实现:

SELECT SUBSTR('hello', LEVEL, 1) AS single_char
FROM dual
CONNECT BY LEVEL <= LENGTH('hello');

简单解释:

  • SUBSTR('hello', LEVEL, 1):LEVEL是CONNECT BY生成的递增值(从1开始),每次截取字符串对应位置的1个字符
  • CONNECT BY LEVEL <= LENGTH('hello'):控制循环次数刚好等于字符串的长度,确保每个字符都被取到
  • 执行后会输出预期结果:

h
e
l
l
o

PostgreSQL 实现方案

PostgreSQL可以用generate_series生成序列来配合字符串截取:

SELECT SUBSTRING('hello' FROM n FOR 1) AS single_char
FROM generate_series(1, LENGTH('hello')) AS n;

说明:

  • generate_series(1, LENGTH('hello')):生成从1到字符串长度的数字序列,相当于给每个字符分配一个位置编号
  • SUBSTRING('hello' FROM n FOR 1):根据编号n截取对应位置的单个字符

MySQL 实现方案

MySQL可以用递归CTE(公共表表达式)来实现:

WITH RECURSIVE chars AS (
    SELECT 1 AS pos, SUBSTRING('hello', 1, 1) AS single_char
    UNION ALL
    SELECT pos + 1, SUBSTRING('hello', pos + 1, 1)
    FROM chars
    WHERE pos < LENGTH('hello')
)
SELECT single_char FROM chars;

逻辑说明:

  • 先初始化递归的起点:取字符串第1位的字符
  • 然后每次递归把位置pos加1,截取对应位置的字符,直到位置等于字符串长度时停止递归

内容的提问来源于stack exchange,提问作者Raambabu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:27:52