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

如何将字符串末尾2个字符移至开头?求除拼接外的SQL实现方法

替代字符串拼接的实现方案

针对你需求的字符串处理场景,除了显式使用SUBSTR拼接的方式外,还有更灵活的正则表达式方案,同时也可以通过先清理字符串再调整位置的方式实现,以下是具体示例:

1. 正则表达式替换(REGEXP_REPLACE)

这种方法无需手动拼接子串,通过正则匹配字符串结构直接完成替换,适配性更强(比如前缀长度不固定时也能正常工作):

SELECT REGEXP_REPLACE('FM73457 2038', '([A-Z0-9]+) 20([0-9]{2})', '\2\1') FROM dual;

逻辑说明:

  • ([A-Z0-9]+):匹配空格前的所有字母数字字符(即示例中的FM73457),作为第一个捕获组
  • 20:匹配需要移除的空格和固定字符"20"
  • ([0-9]{2}):匹配最后两位数字(即示例中的38),作为第二个捕获组
  • \2\1:替换时将第二个捕获组移到前面,第一个捕获组跟在后面,自动完成格式转换

2. 先清理再调整位置(逻辑更清晰的拼接变种)

如果不想用正则,可以先移除空格和"20",再将处理后字符串的最后两位移到开头:

WITH cleaned_str AS (
    SELECT REPLACE(REPLACE('FM73457 2038', ' ', ''), '20', '') AS str FROM dual
)
SELECT SUBSTR(str, -2) || SUBSTR(str, 1, LENGTH(str)-2) FROM cleaned_str;

逻辑说明:

  • 先用两层REPLACE去掉空格和"20",得到FM7345738
  • 再通过SUBSTR(str, -2)提取最后两位,SUBSTR(str, 1, LENGTH(str)-2)提取前面的部分,最后拼接成目标格式

以上两种方法执行后都能得到结果38FM73457,其中正则方案更适合结构固定但长度可变的字符串场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 00:47:15