簡體   English   中英

修剪 function 無法處理 to_char 的結果

[英]trim function not working on result of to_char

查詢

SELECT TRIM(BOTH '0' FROM  '003') FROM DUAL;

按預期給出結果3 ,但查詢:

select TRIM(BOTH '0' from TO_CHAR(3,'000')) from dual;

003

我需要將結果作為第一個查詢('3'),但我還需要'TO_CHAR'(我正在使用它從 NUMBER 列創建虛擬列)。

我不知道為什么以及如何解決它。 另外,我不能使用 regex_replace 代替。

您想使用FM格式 model 不包括前導空格。

SELECT TRIM(BOTH '0' from TO_CHAR(3,'FM000'))
FROM   DUAL;

哪個輸出:

  |  TRIM(BOTH'0'FROMTO_CHAR(3,'FM000')) |  |:---------------------------------- |  |  3 |

如果你想要一個生成的列,那么:

CREATE TABLE table_name (
  value         NUMBER,
  trimmed_value VARCHAR2(10)
                GENERATED ALWAYS AS (TRIM(BOTH '0' FROM TO_CHAR(value, 'FM000')))
);

INSERT INTO table_name ( value )
SELECT   0 FROM DUAL UNION ALL
SELECT   3 FROM DUAL UNION ALL
SELECT  30 FROM DUAL UNION ALL
SELECT 100 FROM DUAL;

然后:

SELECT *
FROM   table_name;

輸出:

 價值 |  TRIMMED_VALUE ----: |:------------ 0 |  null 3 |  3 30 |  3 100 |  1

db<> 在這里擺弄

代替TRIM ,您可以使用以下語句實現結果 33:

select substr (00033,instr(000,-1))from dual

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM