1. Functions Introduction
This section gives examples of all functions that are available in the Mckoi database software. Functions may be used within all expressions except aggregate functions that may only be used within the SELECT .... FROM
clause.
2. Mathematical Functions
Follows are all the mathematical functions available in Mckoi Database. Note that some of these functions may lose precision because the number could be cast to a 'double'. You can assume that all mathematical functions have at worst the precision of a 'double'.
ABS(number)Returns the absolute value of a number.SIGN(number)Examples:SELECT ABS(-0.94)
==> 0.94SELECT ABS(9 - 200)
==> 191Returns 1 if the number is positive, -1 if the number is negative and 0 if the number is zero.MOD(number1, number2)Examples:SELECT SIGN(40)
==> 1SELECT SIGN(-40)
==> -1SELECT SIGN(40 - 40)
==> 0Returns the modulo of number1 and number2 (equivalent to {number1 % number2} in Java).ROUND(number, decimal_places)Examples:SELECT MOD(15, 5)
==> 0SELECT MOD(33, 10)
==> 3SELECT ROUND(552 / 10), MOD(552, 10)
==> 55, 2
ROUND(number)Rounds the number to 'n' decimal places. When no 'decimal_places' argument is provided the number is rounded to the nearest whole number.POW(number1, number2)
This will round up if the fraction to the right is >= .5 otherwise it rounds down. This uses the {BigDecimal.setScale(decimal_places, BigDecimal.ROUND_HALF_UP)} method for rounding.Examples:SELECT ROUND((943 * 13) / 99, 3)
==> 123.828SELECT ROUND((943 * 13) / 99, 2)
==> 123.83SELECT ROUND((943 * 13) / 99)
==> 124Raises number1 to the power of number2.SQRT(number)Examples:SELECT POW(9, 6)
==> 531441SELECT POW(2, 32)
==> 4294967296SELECT POW(2, 64)
==> 18446744073709551616SELECT POW(2, -3)
==> 0.125Finds the square root of the number argument.LEAST(val1, val2, ...)Examples:SELECT SQRT(65536)
==> 256SELECT SQRT(-1)
==> NULLThis function accepts any number of arguments and returns the value that represents the least value of the set.GREATEST(val1, val2, ...)Examples:SELECT LEAST(4)
==> 4SELECT LEAST(90, 9.125, 3, 75)
==> 3SELECT LEAST('H', 'Z', 'B')
==> BSELECT LEAST(10 / 3, 10 * 3,
POW(10, 3), MOD(10, 3))
==> 1This function accepts any number of arguments and returns the value that represents the greatest value of the set.Examples:SELECT GREATEST(4)
==> 4SELECT GREATEST(90, 9.125, 3, 75)
==> 90SELECT GREATEST('H', 'Z', 'B')
==> ZSELECT GREATEST(10 / 3, 10 * 3,
POW(10, 3), MOD(10, 3))
==> 1000
3. String Functions
String functions in Mckoi Database mostly map to equivalent functions found within java.lang.String.
LOWER(str)Returns a lower case version of the string literal argument.UPPER(str)Examples:SELECT LOWER('THis is sOME TEXT')
==> this is some textReturns an upper case version of the string literal argument.CONCAT(str1, str2, ...)Examples:SELECT UPPER('THis is sOME TEXT')
==> THIS IS SOME TEXTReturns the concatenation of the string arguments. This function can take any number of arguments.LENGTH(str)Examples:SELECT CONCAT('This i', 's some text', '.')
==> This is some text.SELECT CONCAT('-', 0.95)
==> -0.95Returns the number of characters in the string argument.TRIM( [ [ LEADING | TRAILING | BOTH ] [ characters ] FROM ] str )
NOTE: This may additionally be used on BLOB data to return the count of bytes in the BLOB.Examples:SELECT LENGTH('This is some text')
==> 17SELECT LENGTH(0.544)
==> 5SELECT LENGTH(' Test')
==> 8
LTRIM(str)
RTRIM(str)Trims characters from a string argument. TheSUBSTRING(str, start_index)LTRIM
andRTRIM
form trim whitespace from the left and right of the string respectively.Examples:SELECT TRIM(TRAILING 'a' FROM 'aaabcdaaa')
==> aaabcdSELECT TRIM(LEADING 'a' FROM 'aaabcdaaa')
==> bcdaaaSELECT TRIM('ab' FROM 'ababzzzzab')
==> zzzzSELECT TRIM(' a string message ')
==> a string message
SUBSTRING(str, start_index, length)Returns a substring of a string. TheSUBSTRING
function complies with the SQL specification. Thestart_index
parameter is a value between 1 and the length of the string where 1 includes the first character, 2 includes the second character, etc. Thelength
parameter represents the size of the substring.Examples:SELECT SUBSTRING('Tobias Downer', 8)
==> DownerSELECT SUBSTRING('abcd', 1, 2)
==> abSELECT SUBSTRING('abcd', 3, 4)
==> cdSELECT SUBSTRING('abcd', 3, 5000)
==> cdSELECT SUBSTRING('abcd', 0, 5000)
==> abcdSELECT SUBSTRING('abcd', 1, 0)
==> (string of 0 length)
4. Aggregate Functions
Aggregate functions can only operate within a group of a SELECT statement. They are used to compute statistics over a set of records.
COUNT(*)
COUNT(DISTINCT expression_list)
COUNT(column_name)
COUNT(expression)The * version of this function returns the total number of rows in the group. If a column name is specified it returns the number of non-null values in the group. The 'expression' form of this function evaluates the expression for each row in the group and counts it only if it evaluates to NULL.SUM(column_name)COUNT(DISTINCT ... )
counts all distinct values of the expression list over the group.Examples:SELECT COUNT(*)
FROM OrdersSELECT COUNT(*)
FROM Orders
GROUP BY divisionSELECT COUNT(id)
FROM Orders
GROUP BY divisionSELECT last_name, COUNT(DISTINCT last_name)
FROM Customers
GROUP BY age
SUM(expression)Calculates the sum of all values in a column/expression over a group. The expression form of this function is evaluated for each row in the group.AVG(column_name)Examples:SELECT SUM(value) FROM Orders
SELECT SUM(quantity * value)
FROM OrdersSELECT SUM(quantity * value) * 0.75
FROM Orders
GROUP BY division
AVG(expression)Calculates the average of the column/expression over the group. The expression form of this function is evaluated for each row in the group.MIN(column_name)Examples:SELECT AVG(value) FROM Orders
SELECT AVG(quantity * value)
FROM OrdersSELECT AVG(quantity * value) * 0.75
FROM Orders
GROUP BY division
MIN(expression)Finds the minimum value of a column/expression over a group.MAX(column_name)Examples:SELECT MIN(value) FROM Orders
SELECT MIN(quantity * value)
FROM OrdersSELECT MIN(quantity * value) * 0.75
FROM Orders
GROUP BY division
MAX(expression)Finds the maximum value of a column/expression over a group.Examples:SELECT MAX(value) FROM Orders
SELECT MAX(quantity * value)
FROM OrdersSELECT MAX(quantity * value) * 0.75
FROM Orders
GROUP BY division
5. Security Functions
Functions that provide security information about the session performing the query.
USER()Returns the current user.PRIVGROUPS()Returns a comma deliminated list of priv groups the user belongs to. A user may belong to any number of groups which dictate the tables a user may access.
6. Branch Functions
IF(condition_expr, true_expr, false_expr)If the first expression (condition_expr) evaluates to true this function returns the result of 'true_expr' otherwise returns the result of 'false_exp'.COALESCE(expr1, expr2, expr3, ....)Examples:SELECT IF(true, 5, 8)
==> 5SELECT IF(false, 5, 8)
==> 8SELECT IF(NULL, 5, 8)
==> NULLSELECT IF(true, IF(false, 1, 2), 3)
==> 2SELECT IF(col1 = 0, 'N/A', col1) FROM MyTable
Returns the first non null value from the parameters or null if the entire list contains null values.Examples:SELECT COALESCE(NULL, 'a')
==> aSELECT COALESCE(NULL, NULL, NULL)
==> NULLSELECT COALESCE(col1, 'N/A') FROM MyTable
7. Date/Time Functions
DATEOB(date_string)Parses a string to a Date object that can be used on queries against TIMESTAMP / DATE / TIME columns. DATEOB with no arguments returns the current time of the machine running the database.
Since version 0.92 this function has been deprecated. Use the standard DATE, TIME and TIMESTAMP literals specified in SQL-92 instead.Examples:SELECT DATEOB()
==> Wed Aug 09 11:49:31 EDT 2000SELECT DATEOB('Aug 1, 2000')
==> Tue Aug 01 00:00:00 EDT 2000SELECT number FROM Orders
WHERE date_made >= DATEOB('Jan 1, 2000')
8. Misc Functions
UNIQUEKEY(table_name)Returns a unique key for the given table name. This is an atomic operation that is guaranteed to return a unique number each call. It should be used to generate unique identification numbers for records. It is similar to the AUTO_INCREMENT feature of other database systems.TONUMBER(expression)Examples:SELECT UNIQUEKEY('Orders')
INSERT INTO Orders
( id, number, division, date_made, quantity,
value )
VALUES
( UNIQUEKEY('Orders'), CONCAT('Order-', id),
'Bio Engineering', DATEOB(), 25, 1900.00 )Attempts to cast the expression to a number. If the expression is a boolean then this function will return 1 for true or 0 for false. If the expression is a String then it attempts to parse the string into a number. If the expression is a Date then it returns the date as the number of milliseconds since Jan 1st, 1970.Examples:SELECT TONUMBER(DATEOB('Aug 1, 2000'))
==> 965102400000
0 comments:
Post a Comment