2015-05-05 55 views
1
SQL> select 'TMP' || to_char(sq_id.nextval, '000000') res 
    2 from dual 
    3/

RES 
---------- 
TMP 000006 

SQL> select concat('TMP',to_char(sq_id.nextval, '000000')) res 
    2 from dual 
    3/

RES 
---------- 
TMP 000007 

請解釋我如何避免上述連接字符串避免空間,同時串連

回答

1

之間的間隔,以避免從正在添加到焦炭方法利用FM的空間(即除去尾隨空格) :

to_char(sq_id.nextval,'FM000000') 
1

這是因爲to_char(sq_id.nextval, '000000')產生在輸出一個領先空間

讓我們來看看:

SQL> CREATE SEQUENCE sq_id; 

Sequence created. 

SQL> select to_char(sq_id.nextval, '000000') from dual; 

TO_CHAR 
------- 
000001 

你可以使用LTRIM修剪前導空格:

SQL> SELECT 'TMP' || ltrim(to_char(sq_id.nextval, '000000'), ' ') res FROM dual; 

RES 
---------- 
TMP000002 

SQL> 

或者,你可以使用填充模式格式模型。

表格文檔:

FM

「填充模式」。這個修改抑制填補空白的TO_CHAR函數

例如返回 值,

SQL> SELECT 'TMP' || ltrim(to_char(sq_id.nextval, 'FM000000'), ' ') res FROM dual; 

RES 
---------- 
TMP000003 

SQL> 
+0

感謝you.its工作 – user3157300

+0

@ user3157300不客氣!請標記爲已回答,也會幫助其他人。 –