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

如何使用SQL Loader按规则拆分全大写姓氏至新列?

SQL Loader拆分全大写姓氏至新列解决方案

针对你需要从平面文件的姓名中提取全大写形式(含连字符)姓氏的需求,可通过SQL Loader结合Oracle正则表达式函数实现,以下是具体方案:

核心思路

利用Oracle的REGEXP_SUBSTR函数,匹配姓名字符串中由大写字母(A-Z)和连字符(-)组成的连续序列,该序列即为目标姓氏。

控制文件示例

假设你的平面文件names.dat每行存储一个姓名,内容如下:

THOMAS Young
SMITH Lucas (A.K.A Luca SMITH)
Dan bin Islam bin Al-BALUSHI
James GORDON-LOPEZ

对应的SQL Loader控制文件load_names.ctl配置如下:

LOAD DATA
INFILE 'names.dat'
INTO TABLE person_info
FIELDS TERMINATED BY '\n' -- 按换行符分隔每行数据
TRAILING NULLCOLS
(
    full_name CHAR(100), -- 读取完整姓名
    last_name CHAR(50) "REGEXP_SUBSTR(:full_name, '([A-Z]+(?:-[A-Z]+)*)', 1, 1, 'c')"
)

正则表达式说明

'([A-Z]+(?:-[A-Z]+)*)':

  • [A-Z]+:匹配一个或多个大写字母
  • (?:-[A-Z]+)*:支持带连字符的姓氏,匹配零个或多个“-+大写字母”组合
  • 'c'参数:开启区分大小写,确保仅匹配全大写序列

验证效果

该配置对示例姓名的拆分结果完全符合需求:

原姓名拆分出的姓氏
THOMAS YoungTHOMAS
SMITH Lucas (A.K.A Luca SMITH)SMITH
Dan bin Islam bin Al-BALUSHIBALUSHI
James GORDON-LOPEZGORDON-LOPEZ

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 14:05:29