Oracle数据库:如何为FRUITS列字符串每隔3个字符插入空格?
实现水果名称按3字符分组拆分并格式化
方法一:MySQL 自定义函数实现
先创建处理单个字符串的自定义函数,统一格式后按3字符分段拼接:
DELIMITER // CREATE FUNCTION split_fruit_name(fruit VARCHAR(100)) RETURNS VARCHAR(200) DETERMINISTIC BEGIN DECLARE result VARCHAR(200) DEFAULT ''; DECLARE len INT DEFAULT LENGTH(fruit); DECLARE pos INT DEFAULT 1; DECLARE part VARCHAR(10); -- 统一为首字母大写、其余小写的格式 SET fruit = CONCAT(UPPER(LEFT(fruit, 1)), LOWER(SUBSTRING(fruit, 2))); WHILE pos <= len DO SET part = SUBSTRING(fruit, pos, 3); SET result = CONCAT(result, IF(result = '', '', ' '), part); SET pos = pos + 3; END WHILE; RETURN result; END // DELIMITER ;
调用函数处理目标列:
SELECT split_fruit_name(FRUITS) AS formatted_fruit FROM your_table;
测试验证:
Banana → Ban ana
Watermelon → Wat erm elo n
pomegranate → Pom meg ran ate
方法二:Python Pandas 实现
通过apply结合字符串切片完成格式化:
import pandas as pd # 构造示例数据 df = pd.DataFrame({'FRUITS': ['Banana', 'Watermelon', 'pomegranate']}) def format_fruit(name): # 统一格式 name = name.capitalize() # 按3字符分段后拼接 return ' '.join([name[i:i+3] for i in range(0, len(name), 3)]) # 生成格式化后的列 df['formatted_fruit'] = df['FRUITS'].apply(format_fruit) # 输出结果 print(df['formatted_fruit'])
输出结果:
0 Ban ana 1 Wat erm elo n 2 Pom meg ran ate Name: formatted_fruit, dtype: object
内容的提问来源于stack exchange,提问作者anyaplayer
相关产品推荐
相关产品推荐

