標準 SQL 無內建字符串分裂函數,但可通過輔助序列表 + 笛卡爾積 + SUBSTRING 巧妙實現單字符拆分,適用於 MySQL、Oracle、SQL Server 等多數關係型數據庫。
id (1,2,3...n),行數 ≥ 目標字符串最大長度。Src 與 Temp 交叉連接,產生每字符對應的位置行。Temp.id <= LENGTH(Src.str) 的行,用 SUBSTRING(str, pos, 1) 取單字符。Temp 表 Src 表 id id name other 1 1 Paul KKK 2 3 ... 8
SELECT SUBSTRING(s.name, iter.pos, 1) AS ch FROM (SELECT name FROM Src WHERE name = 'Paul') s CROSS JOIN (SELECT id AS pos FROM Temp) iter WHERE iter.pos <= LENGTH(s.name);
ch P a u l
SUBSTRING_INDEX (MySQL) 或 REGEXP_SUBSTR (Oracle 11g+/PG) 可按逗號、分號等拆分字段值。JSON_TABLE、PG regexp_split_to_table)。