从字符串中取出最后 2 个字符并附加到字符串的开头

问题描述 投票:0回答:1

我有一个要求,我需要从字符串中取出最后 2 个字符并将它们附加到字符串的开头。

示例:FM73457 2038 是字符串值。我想从 FM73457 2038 中取出最后 2 个字符,即 38,并将其附加到开头,即 38FM73457 并删除空格和 20。

输出应类似于 38FM73457

除了 concat 还有其他方法吗?

select substr('FM73457 2038',11,2)||substr('FM73457 2038',1,7) from dual;

38FM73457
sql oracle plsql
1个回答
0
投票

也许下面的示例将帮助您更多地了解可变长度的子字符串以及如何从字符串中获取最后 2 个字符。 基本上你需要做两件事,从子字符串中抓取最后 2 个字符并抓取第一部分直到第一个空格。

另请看一下 INTR() 函数,该函数可以剪切字符串,直到遇到某个值(例如空格)。

DECLARE
        vString VARCHAR2(1000) := 'FM73457 2038';
        vResult VARCHAR2(1000);
BEGIN
        -- Take the last 2 characters.
        vResult := SUBSTR(vString, LENGTH(vString)-1, LENGTH(vString)); --Result: 38
        -- Cut the string until the first whitespace, and add it behind the 2 characters.
        vResult := vResult || SUBSTR(vString, 1, INSTR(vString, ' ') -1);
        
        DBMS_OUTPUT.PUT_LINE('Result: ' || vResult);
END;
/

或者如果您想将其写入单个 SELECT 语句:

SELECT SUBSTR('FM73457 2038', LENGTH('FM73457 2038')-1, LENGTH('FM73457 2038')) || SUBSTR('FM73457 2038', 1, INSTR('FM73457 2038', ' ') -1) FROM Dual;
© www.soinside.com 2019 - 2024. All rights reserved.