數字函數

          *******************************************************************

          1. ROUND

          *******************************************************************

          The ROUND function returns n rounded to m places right of the decimal point; if m is omitted, to 0 places. m can be negative to round off digits left of the decimal point. m must be an integer.

          Syntax

          image

          PL/SQL Example
          ROUND (153.46) ==> 153
          ROUND (153.46, 1) ==> 153.5
          ROUND (153, -1) ==> 150

          SQL Examples
          SELECT ROUND(15.193,1) "Round"
          FROM DUAL
               Round
          ----------
                15.2
          SELECT ROUND(15.193,-1) "Round"
          FROM DUAL
               Round
          ----------
                  20

           

          *******************************************************************

          2. TRUNC

          *******************************************************************

          The TRUNC function truncates the number supplied to the specified number of places. If no place number is supplied, it rounds to zero decimal places. If the place number is negative, the number is truncated that many places to the right of the decimal place. This function does no rounding, it simply deletes the un-wanted numbers and returns the rest.

          Syntax

          image 

           

          PL/SQL Example
          TRUNC (153.46) ==> 153
          TRUNC (153.46, 1) ==> 153.4
          TRUNC (-2003.16, -1) ==> -2000

          SQL Example
          SELECT TRUNC(15.79,1) "Truncate"
          FROM DUAL 
            Truncate
          ----------
                15.7
          SELECT TRUNC(15.79,-1) "Truncate"
            FROM DUAL 
            Truncate
          ----------
                  10

           

          *******************************************************************

          3. INSTR

          *******************************************************************

          The INSTR functions search string for substring. The function returns an integer indicating the position of the character in string that is the first character of this occurrence. INSTR calculates strings using characters as defined by the input character set. INSTRB uses bytes instead of characters. INSTRC uses unicode complete characters. INSTR2 uses UCS2 codepoints. INSTR4 uses UCS4 codepoints.
          position is an nonzero integer indicating the character of string where Oracle begins the search. If position is negative, Oracle counts and searches backward from the end of string.
          occurrence is an integer indicating which occurrence of string Oracle should search for. The value of occurrence must be positive.
          Both string and substring can be any of the datatypes CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, or NCLOB. The value returned is of NUMBER datatype.

          The default values of both position and occurrence are 1, meaning Oracle begins searching at the first character of string for the first occurrence of substring. The return value is relative to the beginning of string, regardless of the value of position, and is expressed in characters. If the search is unsuccessful (if substring does not appear occurrence times after the position character of string), the return value is 0.

          Syntax
          image


          PL/SQL Example
          Find the first occurrence of archie in “bug-or-tv-character?archie”:

          INSTR ('bug-or-tv-character?archie', 'archie') ==> 21
          The starting position and the nth appearance both defaulted to 1.

          Find the first occurrence of archie in the following string starting from position 14:

          INSTR ('bug-or-tv-character?archie', 'ar', 14) ==> 21
          In this example a starting position was specified, which overrides the default of 1; the answer is still the same though. No matter where you start your search, the character position returned by INSTR is always calculated from the beginning of the string.

          Find the second occurrence of archie in the following string:

          INSTR ('bug-or-tv-character?archie', 'archie', 1, 2) ==> 0
          There is only one archie in the string, so INSTR returns 0. Even though the starting point is the default, it cannot be left out if a nondefault nth appearance (2 in this case, for "second occurrence" ) is specified.

          Find the second occurrence of "a" in "bug-or-tv-character?archie":

          INSTR ('bug-or-tv-character?archie', 'a', 1, 2) ==> 15
          The second "a" in this string is the second "a" in "character", which is in the fifteenth position in the string.

          Find the last occurrence of "ar" in "bug-or-tv-character?archie".

          INSTR ('bug-or-tv-character?archie', 'ar', -1) ==> 21
          Use INSTR to confirm that a user entry is valid.

          In the code below, we check to see if the command selected by the user is found in the list of valid commands. If so, that command is executed :

          IF INSTR ('|ADD|DELETE|CHANGE|VIEW|CALC|', '|' || cmd || '|') > 0
          THEN
             execute_command (cmd);
          ELSE
             DBMS_OUTPUT.PUT_LINE
                (' You entered an invalid command. Please try again...');
          END IF;
          SQL Examples
          The following example searches the string "CORPORATE FLOOR", beginning with the third character, for the string "OR". It returns the position in CORPORATE FLOOR at which the second occurrence of "OR" begins:

          SELECT INSTR('CORPORATE FLOOR','OR', 3, 2)
            "Instring" FROM DUAL;
            Instring
          ----------
                  14
          The next example searches beginning with the third character from the end:

          SELECT INSTR('CORPORATE FLOOR','OR', -3, 2)
          "Reversed Instring"
               FROM DUAL;
          Reversed Instring
          -----------------
                         2
          This example assumes a double-byte database character set.

          SELECT INSTRB('CORPORATE FLOOR','OR',5,2) "Instring in bytes"
             FROM DUAL;
          Instring in bytes
          -----------------
                         27

           

           

          *******************************************************************

          4. SUBSTR

          *******************************************************************

          The substring functions return a portion of string, beginning at character position, substring_length characters long. SUBSTR calculates lengths using characters as defined by the input character set. SUBSTRB uses bytes instead of characters. SUBSTRC uses unicode complete characters. SUBSTR2 uses UCS2 codepoints. SUBSTR4 uses UCS4 codepoints.
          If position is 0, it is treated as 1.
          If position is positive, Oracle counts from the beginning of string to find the first character.
          If position is negative, Oracle counts backwards from the end of string.
          If substring_length is omitted, Oracle returns all characters to the end of string. If substring_length is less than 1, a null is returned.
          string can be any of the datatypes CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, or NCLOB. The return value is the same datatype as string. Floating-point numbers passed as arguments to SUBSTR are automatically converted to integers.

          Syntax

          image                                                                                           

           

          PL/SQL Example
          If the absolute value of the starting position exceeds the length of the input string, return NULL:

          SUBSTR ('now_or_never', 200) ==> NULL
          SUBSTR ('now_or_never', -200) ==> NULL
          If starting position is 0, SUBSTR acts as though the starting position was actually 1:

          SUBSTR ('now_or_never', 0, 3) ==> 'now'
          SUBSTR ('now_or_never', 0) ==> 'now_or_never'
          If the substring length is less than or equal to zero, return NULL:
          SUBSTR ('now_or_never', 5, -2) ==> NULL
          SUBSTR ('now_or_never', 1, 0) ==> NULL
          Return the last character in a string:

          SUBSTR ('Another sample string', -1) ==> 'g'
          Remove an element from a string list.

          This is, in a way, the opposite of SUBSTR: we want to extract a portion or substring of a string--and leave the rest of it intact. Suppose the screen maintains a list of selected temperatures, as follows:

          |HOT|COLD|LUKEWARM|SCALDING|
          The vertical bar delimits the different items on the list. When the user deselects "LUKEWARM," we now have to remove it from the list, which becomes:

          |HOT|COLD|SCALDING|
          The best way to accomplish this task is to determine the starting and ending positions of the item to be removed, and then use SUBSTR to take apart the list and put it back together without the specified item.

          The list used in the above example contains 29 characters:

          String:          |HOT|COLD|LUKEWARM|SCALDING|
          Character index: 1234567890123456789012345679
          To extract this item from the list, we need to pull off the portion of the string before "LUKEWARM" as follows:

          SUBSTR ('|HOT|COLD|LUKEWARM|SCALDING|', 1, 10)
          and then we need to extract the trailing portion of the list (after "LUKEWARM"). Notice that we do not want to keep both of the delimiters when we put these pieces back together, so this next SUBSTR does not include the vertical bar at position 19:

          SUBSTR ('|HOT|COLD|LUKEWARM|SCALDING|', 20)
          We use the following concatenation of calls to SUBSTR:

          SUBSTR ('|HOT|COLD|LUKEWARM|SCALDING|', 1, 10)
          ||
          SUBSTR ('|HOT|COLD|LUKEWARM|SCALDING|', 20)
          ==>
             '|HOT|COLD|SCALDING|'
          Remove the middle word in a three-word string (in which each word is separated by an underscore) and switch the order of the first and last words.

          FUNCTION bite_and_switch (tripart_string_in IN VARCHAR2)
             RETURN VARCHAR2
          IS
             /* Location of first underscore */
             first_delim_loc  NUMBER := INSTR (tripart_string_in, '_', 1, 1);
             /* Location of second underscore */
             second_delim_loc NUMBER := INSTR (tripart_string_in, '_', 1, 2);
             /* Return value of function, set by default to incoming string. */
             return_value VARCHAR2(1000) := tripart_string_in;
          BEGIN
             /* Only switch words if two delimiters are found. */
             IF second_delim_loc > 0
             THEN
                /* Pull out  first and second words and stick them together. */
               return_value := 
                   SUBSTR (tripart_string_in, 1, first_delim_loc - 1) || '_' ||
                   SUBSTR (tripart_string_in, second_delim_loc + 1);
             END IF;
             /* Return the switched string */
             RETURN return_value;
          END bite_and_switch;
          SQL Examples
          The following example returns several specified substrings of "ABCDEFG":

          SELECT SUBSTR('ABCDEFG',3,4) "Substring"
               FROM DUAL;
          Substring
          ---------
          CDEF
          SELECT SUBSTR('ABCDEFG',-5,4) "Substring"
               FROM DUAL;
          Substring
          ---------
          CDEF
          Assume a double-byte database character set:

          SELECT SUBSTRB('ABCDEFG',5,4.2) "Substring with bytes"
               FROM DUAL;
          Substring with bytes
          --------------------
          CD

           

           

          *******************************************************************

          5. RPAD

          *******************************************************************

          The RPAD or Right Pad function returns char1, right-padded to length n with char2, replicated as many times as necessary; char2 defaults to a single blank. If char1 is longer than n, this function returns the portion of char1 that fits in n.RPAD will also perform a trim function on the string if the specified length is less than the actual string length.
          Both char1 and char2 can be any of the datatypes CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB, or NCLOB. The string returned is of VARCHAR2 datatype and is in the same character set as char1.

          The argument n is the total length of the return value as it is displayed on your terminal screen. In most character sets, this is also the number of characters in the return value. However, in some multibyte character sets, the display length of a character string can differ from the number of characters in the string.

          Syntax
          image


          PL/SQL Example
          Display the number padded right with zeros to a length of 10:

          RPAD ('55', 10, '0') ==> '5500000000'
          You could also use TO_CHAR to convert from a number to a character:

          TO_CHAR (55 * 10000000) ==> '5500000000'
          Display the number padded right with zeros to a length of 5:

          RPAD ('12345678', 5) ==> '12345'
          RPAD interprets its padded_length as the maximum length of the string that it may return. As a result, it counts padded_length number of characters from the left (start of the string) and then simply returns that substring of the incoming value. This is the same behavior as that found with LPAD. Remember: RPAD does not return the rightmost five characters (in the above case "45678").

          Place the phrase "sell!" after the names of selected stocks, up to a string length of 45:

          RPAD ('HITOP TIES', 45, 'sell!')
          ==>
          '  HITOP TIESsell!sell!sell!sell!sell!sell!sell!'
          Since the length of "HITOP TIES" is 10 and the length of "sell!" is 5, there is room for seven repetitions of the pad string. RPAD does, in fact, generate a repetition of the pattern specified in the pad string.

          Place the phrase "sell!" after the names of selected stocks, up to a string length of 43:

          RPAD ('HITOP TIES', 43, 'sell!')
          ==>
             'HITOP TIESsell!sell!sell!sell!sell!sell!sel'
          Because the length of "HITOP TIES" is 10 and the length of "sell!" is 5, there is no longer room for seven full repetitions of the pad string. As a result, the seventh repetition of "sell!" lost its last two characters.

          Create a string of 60 dashes to use as a border in a report:

          RPAD ('-', 60, '-')
          ==>
          '------------------------------------------------------------'
          SQL Example
          The following example rights-pads a name with the letters "ab" until it is 12 characters long:

          SELECT RPAD('MORRISON',12,'ab') "RPAD example"
               FROM DUAL;
          RPAD example
          -----------------
          MORRISONabab

          posted on 2009-03-11 09:53 JavaBegger 閱讀(174) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2009年3月>
          22232425262728
          1234567
          891011121314
          15161718192021
          22232425262728
          2930311234

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 工布江达县| 泰宁县| 常熟市| 平乡县| 同心县| 自贡市| 灵山县| 双鸭山市| 屏南县| 灵川县| 于都县| 招远市| 淮南市| 尤溪县| 井陉县| 黄龙县| 临武县| 化隆| 左贡县| 建瓯市| 东乡族自治县| 炉霍县| 密山市| 皮山县| 太湖县| 弥渡县| 北票市| 曲阜市| 澜沧| 仙游县| 株洲县| 鄂温| 大同县| 竹溪县| 岳阳县| 衡南县| 涡阳县| 安远县| 东港市| 娄烦县| 渝中区|