全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1335
推到 Plurk!
推到 Facebook!

欄位內,字串加總

尚未結案
asou982002
一般會員


發表:14
回覆:15
積分:5
註冊:2003-06-22

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-29 15:17:13 IP:220.130.xxx.xxx 未訂閱
請教各位大大: 是不是有function or mothod 可以讓我再query內,算出一個欄位數字的加總 select num,'num數字加總' totstr from aaa 若num=12345 totstr=15 thanks
rightyo
一般會員


發表:16
回覆:22
積分:17
註冊:2004-11-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-31 07:54:14 IP:61.62.xxx.xxx 未訂閱
請問你是兩個欄位的資料加總?還是單一欄位? ex: num totstr ---------------- 12345 15 122 1 單一欄位就如下 select sum(num) from aaa 兩個欄位如下 select sum(num sotstr) from aaa
shinjie
資深會員


發表:12
回覆:275
積分:287
註冊:2003-03-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-31 09:06:08 IP:203.73.xxx.xxx 未訂閱
並沒有這種function。如果你的num固定是五位的話,可以透過轉換型態 TO_CHAR(number [, fmt])先將 12345轉成字串 SUBSTR(char,m,n) 取得第m位,長度n的字串 如substr(char,1,1)=1 然後再相加。
------
我將在茫茫人海中尋訪我唯一之靈魂伴侶。
得之;我幸。不得;我命。
asou982002
一般會員


發表:14
回覆:15
積分:5
註冊:2003-06-22

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-31 10:01:16 IP:220.130.xxx.xxx 未訂閱
rightyo 大大: 你可能誤解我的意思了,shinjie大大說的才是我想陳述的,目前我也是 用shinjie大大的做法,只是覺得太麻煩了,所以想請教是否有更好的做法
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-31 12:50:42 IP:210.65.xxx.xxx 未訂閱
Hi asou982002,    可以自己寫一個 Function (假如你的 DB  許可的話) 以下用 Oracle 為範例
CREATE OR REPLACE FUNCTION TEST_FUNCTION1
   (P_IN_NUMBER    IN  VARCHAR2)
RETURN NUMBER IS
    RESULT      NUMBER;
    V_NUMBER    NUMBER;
BEGIN
    BEGIN
        V_NUMBER := P_IN_NUMBER;
        RESULT := 0;
        LOOP
            RESULT := RESULT   MOD(V_NUMBER,10);
            V_NUMBER := TRUNC(V_NUMBER / 10);
            EXIT WHEN V_NUMBER = 0;
        END LOOP;
    EXCEPTION
        WHEN OTHERS THEN
            RESULT := -1;
    END;
    RETURN(RESULT);
END TEST_FUNCTION1;    如此一來即可    SELECT NUM,TEST_FUNCTION1(NUM) TOTSTR FROM AAA
取得 TotalStr ---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
asou982002
一般會員


發表:14
回覆:15
積分:5
註冊:2003-06-22

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-31 19:44:46 IP:220.130.xxx.xxx 未訂閱
fishman大大,如果我num,變成了一部分字元,一部份是數字,那我要如何把 數字挑出來加總呢 exp.... num totstr=15 abc123 6
Fishman
尊榮會員


發表:120
回覆:1949
積分:2163
註冊:2006-10-28

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-02-01 08:28:28 IP:210.65.xxx.xxx 未訂閱
Hi asou982002,    如你先前的做法,一個字元一個字元讀出,轉換(需考慮例外處理,即非數字字元)、加總、回傳
CREATE OR REPLACE FUNCTION TEST_FUNCTION2
   (P_IN_STR    IN  VARCHAR2)
RETURN NUMBER IS
    RESULT      NUMBER;
    V_NUMBER    NUMBER;
BEGIN
    BEGIN
        RESULT := 0;
        FOR I IN 1..LENGTH(P_IN_STR) LOOP
            BEGIN
                V_NUMBER := TO_NUMBER(SUBSTR(P_IN_STR,I,1));
            EXCEPTION
                WHEN OTHERS THEN
                    V_NUMBER := 0;
            END;
            RESULT := RESULT   V_NUMBER;
        END LOOP;
    EXCEPTION
        WHEN OTHERS THEN
            RESULT := -1;
    END;
    RETURN(RESULT);
END TEST_FUNCTION2;
---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman
asou982002
一般會員


發表:14
回覆:15
積分:5
註冊:2003-06-22

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-02-02 18:25:47 IP:220.130.xxx.xxx 未訂閱
Fishman大大: 我想也只能這樣了,不過還是謝謝你!! shinjie...rightyo...大大:也謝謝你們提供意見
系統時間:2024-06-02 13:15:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!