<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Let's go inside

    this blog is deprecated as a result of laziness.
    posts - 59, comments - 2, trackbacks - 0, articles - 0

    實(shí)戰(zhàn)Oracle--自定義function

    Posted on 2006-08-01 08:01 Earth 閱讀(1291) 評(píng)論(0)  編輯  收藏 所屬分類: Java

    因?yàn)閛racle9i不支持正則表達(dá)式,REPLACE函數(shù)不夠強(qiáng)大,只好自己寫了一個(gè)函數(shù)。

    需求:
    把給定的字符串中的數(shù)字部分去掉,如果101 North Steet替換成 North Street

    使用方法:
    select REPLACE_NUM('101 North Steet') from dual

    開發(fā)工具: Toad(有Debug功能,寫function, procedure非常方便)

    方法。

    1。先找到Toad中Schema Browser的Procs標(biāo)簽欄。
    2。Create New Object. Object Type: function. New Object Name: REPLACE_NUM. OK!
    3。代碼如下:

    /* Formatted on 2006/05/15 13:57 (Formatter Plus v4.8.5) */
    CREATE OR REPLACE FUNCTION replace_num (street_name IN VARCHAR2)
    ?? RETURN VARCHAR2
    IS
    ?? RESULT?????? VARCHAR2 (1000);
    ?? num????????? NUMBER (3)????? := 0;
    ?? beginindex?? NUMBER (3)????? := 1;
    ?? endindex???? NUMBER (3)????? := 1;
    ?? j??????????? NUMBER (3)????? := 1;
    ?? letter?????? CHAR (1);
    ?? temp???????? CHAR (1);
    BEGIN
    ?? num := LENGTH (street_name);

    ?? IF num IS NULL OR num = 0
    ?? THEN
    ????? RETURN street_name;
    ?? END IF;

    ?? endindex := num;

    ?? -- find the first digit
    ?? FOR i IN 1 .. num
    ?? LOOP
    ????? temp := SUBSTR (street_name, i, 1);

    ????? IF (ASCII (temp) >= 48 AND ASCII (temp) <= 57)
    ????? THEN
    ???????? beginindex := i;
    ???????? EXIT;
    ????? END IF;
    ?? END LOOP;

    ?? -- find last digit
    ?? j := num;

    ?? WHILE j >= 1
    ?? LOOP
    ????? temp := SUBSTR (street_name, j, 1);

    ????? IF (ASCII (temp) >= 48 AND ASCII (temp) <= 57)
    ????? THEN
    ???????? endindex := j;
    ???????? EXIT;
    ????? END IF;

    ????? j := j - 1;
    ?? END LOOP;

    ?? -- find digit block
    ?? RESULT := SUBSTR (street_name, beginindex, endindex - beginindex + 1);
    ?? -- return string without number
    ?? RESULT := REPLACE (street_name, RESULT);
    ?? RETURN RESULT;
    END replace_num;
    第一次寫函數(shù),碰到了下面一些問題:
    聲明變量的時(shí)候用DECLARE會(huì)報(bào)錯(cuò),后來(lái)改成IS就好了
    賦值符號(hào)是:=,不是=, 條件與是and不是&&
    if語(yǔ)句塊不能用花括號(hào),用if 條件 then 語(yǔ)句塊 end if;
    for語(yǔ)句FOR i IN 1 .. num, 
    其中1..num不能寫成num..1,我以為這樣可以使i遞減,原來(lái)不可以
    后來(lái)改成while語(yǔ)句,并用j := j - 1;進(jìn)行遞減
    跳出循環(huán)是exit不是break, LENGTH(null)返回null而不是0
    就碰到了這些問題,記下來(lái)備用。

    主站蜘蛛池模板: 成人免费午夜在线观看| 久久久久久久99精品免费观看| 亚洲大片免费观看| 国产亚洲精品va在线| 国产特黄特色的大片观看免费视频| 国产一级理论免费版| 曰批全过程免费视频免费看| 免费人成网站在线播放| 美女18毛片免费视频| 亚洲精品无码成人片在线观看| 九九免费久久这里有精品23| 亚洲精品成人片在线观看| WWW免费视频在线观看播放| 亚洲精品无码专区久久久| 成全视频在线观看免费| 久久亚洲私人国产精品| 四虎免费影院ww4164h| 国产精品久久亚洲不卡动漫| 永久免费看bbb| 人妻仑乱A级毛片免费看| 亚洲精品字幕在线观看| 131美女爱做免费毛片| 亚洲人成网亚洲欧洲无码| 国产无遮挡裸体免费视频| 一区二区三区免费视频网站| 亚洲成a人片在线观看无码| 在线视频免费观看爽爽爽| 亚洲国产一区二区三区在线观看| 亚洲国产精品成人网址天堂| 久久国产乱子伦精品免费强| 亚洲国产精品一区二区久| 国产精品免费看香蕉| 中国性猛交xxxxx免费看| 78成人精品电影在线播放日韩精品电影一区亚洲 | 久久笫一福利免费导航| 亚洲av纯肉无码精品动漫| 亚洲日韩精品无码一区二区三区| 37pao成人国产永久免费视频| 亚洲精华国产精华精华液 | 免费一级大黄特色大片| 久久午夜免费鲁丝片|