佳木斯湛栽影视文化发展公司

主頁 > 知識(shí)庫 > Oracle生成不重復(fù)票號(hào)與LPAD,RPAD與NEXTVAL函數(shù)解析

Oracle生成不重復(fù)票號(hào)與LPAD,RPAD與NEXTVAL函數(shù)解析

熱門標(biāo)簽:服務(wù)外包 地方門戶網(wǎng)站 Linux服務(wù)器 鐵路電話系統(tǒng) 呼叫中心市場(chǎng)需求 網(wǎng)站排名優(yōu)化 百度競(jìng)價(jià)排名 AI電銷

SELECT TO_CHAR(SYSDATE,'YYMMDD')||LPAD(REFUNDSEQ.NEXTVAL,6,'0') AS RES_ORDER_NO FROM DUAL

該語句拼接 時(shí)間 與 LPAD產(chǎn)生的 'REFUNDSEQ.NEXTVAL值的前6位有字符,如果不足6位,就用0補(bǔ)足' ,為防止出現(xiàn)重復(fù)票號(hào)增加時(shí)間 ,一天最多出現(xiàn)999999個(gè)有效票號(hào)

DUAL : 是oracle的虛擬表,不是真實(shí)存在的,又稱ORCLE偽表,方便輸出結(jié)果集
REFUNDSEQ : 這個(gè)是開發(fā)人員自己起的一個(gè)"序列"的名字,序列一般用于生成id號(hào)
REFUNDSEQ.NEXTVAL : 就是取序列的下一個(gè)值

怎么把SELECT TO_CHAR(SYSDATE,'YYMMDD')||LPAD(REFUNDSEQ.NEXTVAL,6,'0') AS RES_ORDER_NO FROM DUAL在java中顯示?

//生成交易流水號(hào) 
public String getTicketNo() throws Exception { 
 Map map = jdbcTemplate.queryForMap("SELECT TO_CHAR(SYSDATE,'YYMMDD')||LPAD(REFUNDSEQ.NEXTVAL,6,'0') AS TICKET_NO FROM DUAL"); 
 return (String) map.get("RES_ORDER_NO"); 
} 

一 、 LPAD() 、RPAD() 函數(shù)

        * 從其字面意思也可以理解,l是left的簡(jiǎn)寫,pad是填充的意思,所以lpad就是從左邊填充的意思。該函數(shù)從左邊對(duì)字符串使用指定的字符進(jìn)行填充。

        * 語法:LPAD( STRING, PADDED_LENGTH, [ PAD_STRING ] )

           STRING :準(zhǔn)備被填充的字符串;

           PADDED_LENGTH :填充之后的字符串長(zhǎng)度,也就是該函數(shù)返回的字符串長(zhǎng)度,如果這個(gè)數(shù)量比原字符串的長(zhǎng)度要短,lpad函數(shù)將會(huì)把字符串截取成從左到右的n個(gè)字符;

           PAD_STRING :填充字符串,是個(gè)可選參數(shù),這個(gè)字符串是要粘貼到string的左邊,如果這個(gè)參數(shù)未寫,lpad函數(shù)將會(huì)在string的左邊粘貼空格。

        用例:

                   * SELECT LPAD('asdfg',10,'x') FROM DUAL;輸出:'xxxxxasdfg'
                   * SELECT LPAD('ASDFG',10,'JK') FROM DUAL;輸出:'JKJKJASDFG'
                   * SELECT LPAD('ASDFG',2) FROM DUAL;輸出:'AS'

        * RPAD() 函數(shù)從右邊對(duì)字符串使用指定的字符進(jìn)行填充,語法格式與LPAD格式相同:

                      RPAD('DEMO', 7); 將返回'DEMO '
                      RPAD('DEMO', 2); 將返回'DE'
                      RPAD('DEMO', 8, '0'); 將返回'tech0000'
                      RPAD('DEMO', 4, 'M'); 將返回 'DEMO'
                      RPAD('DEMO', 5, 'M'); 將返回 'DEMOM'

         拼接——流水號(hào),時(shí)間,單號(hào):LPAD(流水號(hào) || 時(shí)間,6,'0')

二 、 NEXTVAL()  函數(shù)

        * 序列名.NEXTVAL :調(diào)用NEXTVAL將生成序列中的下一個(gè)序列號(hào),調(diào)用時(shí)要指出序列名(第一次調(diào)用該方法值為10,第二次調(diào)用為11,第三次調(diào)用為12,依次遞增)。

        * 在Oracle數(shù)據(jù)庫中,什么是序列呢?它的用途是什么?序列(SEQUENCE)其實(shí)是序列號(hào)生成器,可以為表中的行自動(dòng)生成序列號(hào),產(chǎn)生一組等間隔的數(shù)值(類型為數(shù)字)。其主要的用途是生成表的主鍵值,可以在插入語句中引用,也可以通過查詢檢查當(dāng)前值,或使序列增至下一個(gè)值。

總結(jié)

以上就是本文關(guān)于Oracle生成不重復(fù)票號(hào)與LPAD,RPAD與NEXTVAL函數(shù)解析的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:oracle中l(wèi)ength、lengthb、substr、substrb函數(shù)用法介紹、oracle求字符串長(zhǎng)度函數(shù)length()和hengthb()簡(jiǎn)介等,如有不足之處,歡迎留言指出。感謝朋友們對(duì)本站的支持!

您可能感興趣的文章:
  • Oracle存儲(chǔ)過程和存儲(chǔ)函數(shù)創(chuàng)建方法(詳解)
  • MySQL與Oracle差異比較之三 函數(shù)
  • oracle中函數(shù) trunc(),round(),ceil(),floor的使用詳解
  • 淺談mysql可有類似oracle的nvl的函數(shù)
  • oracle中 procedure(存儲(chǔ)過程)和function(函數(shù))本質(zhì)區(qū)別

標(biāo)簽:湖南 湘潭 黃山 崇左 蘭州 仙桃 銅川 衡水

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Oracle生成不重復(fù)票號(hào)與LPAD,RPAD與NEXTVAL函數(shù)解析》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    社旗县| 上栗县| 丹寨县| 治县。| 抚松县| 迁安市| 沐川县| 章丘市| 保德县| 孟村| 德保县| 宁晋县| 辉县市| 正宁县| 宜都市| 石泉县| 突泉县| 资溪县| 尚志市| 锡林郭勒盟| 曲麻莱县| 鹰潭市| 河北区| 天镇县| 开封市| 鹿邑县| 武宣县| 栾川县| 濉溪县| 阳山县| 龙门县| 邢台市| 金华市| 泰宁县| 神木县| 广昌县| 凤阳县| 兰州市| 屏南县| 汾西县| 平安县|