it returns this data: The Answer sun I included a column alias so the resulting data looks nicer. Note that there is no FROM clause in the SELECT statement. Instead of retrieving data from a table, you’re selecting data from a single literal value, namely ‘sunlight’. Strictly speaking, a FROM clause isn’t necessary in a SELECT statement, although in practice, you would seldom write a SELECT statement like this. I’m writing the SELECT statement in this manner, without a FROM clause, only because it makes it easier to illustrate quickly how functions work. DATABASE DIFFERENCES: Oracle Unlike Microsoft SQL Server and MySQL, Oracle does require a FROM clause in all SELECT state- ments. If run in Oracle, all the examples in this chapter would require a FROM clause to be added. However, the table provided in the FROM clause does not have to be a real table. Oracle provides a special dummy table called DUAL. The use of the DUAL table will be illustrated later in this chapter. Let’s look at the format of this function in greater detail. The general format of the LEFT function is: LEFT (CharacterValue, NumberOfCharacters) All functions have any number of arguments within the parentheses. For example the previous LEFT function has two arguments: Charac terValue and NumberOfCharacters. The term arguments is a commonly used mathematical term that describes a component of functions and has nothing to do with any- thing being disagreeable or unpleasant. Basically, each function is unique, and the various arguments that are defined for each function are what truly define the meaning of the function. In the case of the LEFT function, the CharacterValue and NumberOfCharacters arguments are both needed in order to define what will happen when the LEFT function is invoked. The LEFT function has two arguments. Other functions may have more or fewer arguments. Functions are even permitted to have no arguments. But even if there are no arguments, all functions have a set of parentheses following the keyword. The presence of the parentheses tells you that this is a function and not some- thing else. Character Functions 31 The formula for the LEFT function says: Take the specified CharacterValue, look at the specified NumberOfCharacters on the left, and bring back the result. In the previous example, it looks at the CharacterValue ‘sunlight’ and brings back the left three characters. The result is ‘‘sun.’’ The main point to remember is that for any function you want to use, you’ll need to look up the function in the database’s reference guide and determine how many arguments are required and what they mean. The second character function is the RIGHT function. It’s the same as the LEFT function, except that you’re now specifying characters on the right side. For example: SELECT RIGHT ('sunlight',5) AS 'The Answer' returns: The Answer light In this case, you need to specify 5 as the number. If you used the number 3 instead of 5, you would have only gotten back ‘‘ght.’’ DATABASE DIFFERENCES: Oracle Oracle does not provide the LEFT or RIGHT function. The equivalent functionality in Oracle is provided by the SUBSTR function, which will be discussed later. You need to be aware of the fact that character data often contains spaces on the right. Let’s look at this example, in which a table with only one row contains a column named President, defined as being 20 characters long. President George Washington If you issue this SELECT statement against the table: SELECT RIGHT (President,10) AS 'Last Name' FROM table1 Chapter 4 ■ Using Functions32 you will get back this data: Last Name hington We wanted to get back ‘‘Washington’’ but only got ‘‘hington.’’ Why? Because the entire column is 20 characters long. There are three spaces to the right of the value George Washington. So when you ask for the rightmost 10 characters, it’s going to take the three spaces plus another seven characters from George Washington. You’ll soon see that you need to use the RTRIM function to give you the data you’re looking for. You might be wondering how to select data from the middle of a value. This is done by using the SUBSTRING function. The general format of this function is: SUBSTRING (CharacterValue, StartingPosition, NumberOfCharacters) For example: SELECT SUBSTRING ('thewhitegoat', 4, 5) AS 'The Answer' returns this data: The Answer white This function is saying to take five characters, starting with posit ion 4. Position 4 contains the w, so you end up with the word ‘‘white.’’ DATABASE DIFFERENCES: MySQL and Oracle MySQL sometimes requires that there be no space between the function name and the left parenthesis. It depends on the specific function used. For example, the previous statement in MySQL needs to be written as: SELECT SUBSTRING('thewhitegoat', 4, 5) AS 'The Answer'; In Oracle, the equivalent of the SUBSTRING function is SUBSTR. One difference in the Oracle version of SUBSTR is that the second argument ( StartingPosition ) can have a negative value. Character Functions 33 A negative value for this argument means that you need to count that number of positions backward from the right side of the column. As mentioned, Oracle doesn’t permit you to write a SELECT statement without a FROM clause. However, Oracle does provide a dummy table called DUAL for this type of situation. The equivalent of the SELECT with a SUBSTRING function is: SELECT SUBSTR ('thewhitegoat', 4, 5) AS "The Answer" FROM DUAL; Our next two character functions enable you to remove all spaces, either on the left or on the right side of a value. The LTRIM function ‘‘trims’’ characters from the left side of a character. For example: SELECT LTRIM ('the apple') AS 'The Answer' returns this result: The Answer the apple The LTRIM function enables you to get rid of the spaces to the left of ‘‘the apple.’’ Note that LTRIM is smart enough not to eliminate spaces in the middle of a phrase. It only removes the spaces to the very left of a character value. Similarly, the RTRIM function removes any spaces to the right of a character value. An example of RTRIM will be given in the next section on composite functions. The next character function is CONCAT. The CONCAT function discussed here is only available in MySQL and Oracle. As seen in the previous chapter, the plus (þ) operator handles concatenation in Microsoft SQL Server. Let’s return to the concatenation example from the prior chapter. Our input data, from an Orders table, was: OrderID FirstName LastName QuantityPurchased PricePerItem 1 William Smith 4 2.50 2 Natalie Lopez 10 1.25 3 Brenda Harper 5 4.00 Chapter 4 ■ Using Functions34 The syntax for concatenating the FirstName and LastName columns in MySQL with a CONCAT function is: SELECT OrderID, FirstName, LastName, CONCAT (FirstName, ' ', LastName) AS 'Name' FROM Orders In this example, the CONCAT function concatenates the three indicated values: the FirstName column, a literal space, and the LastName column. The result of the previous statement is: OrderID FirstName LastName Name 1 William Smith William Smith 2 Natalie Lopez Natalie Lopez 3 Brenda Harper Brenda Harper DATABASE DIFFERENCES: Oracle The Oracle version of the CONCAT function only allows for two arguments. In other words, only two values can be concatenated at a time. To accomplish the concatenation in the previous example, a statement such as the following must be used: SELECT OrderID, FirstName, LastName, CONCAT (CONCAT (FirstName, ' '), LastName) AS "Name" FROM Orders; This statement utilizes a composite function, a concept that is explained in the following section. In this example, the inner CONCAT concatenates the FirstName column and a literal space. The outer CONCAT concatenates that result with the LastName column. The final two character functions to be covered are UPPER and LOWER. These functions convert any word or phrase to upper- or lowercase. These functions are sometimes helpful when presenting data. The syntax is simple and straightforward. Character Functions 35 . result: The Answer the apple The LTRIM function enables you to get rid of the spaces to the left of ‘ the apple.’’ Note that LTRIM is smart enough not to eliminate spaces in the middle of a phrase have a set of parentheses following the keyword. The presence of the parentheses tells you that this is a function and not some- thing else. Character Functions 31 The formula for the LEFT function. spaces, either on the left or on the right side of a value. The LTRIM function ‘‘trims’’ characters from the left side of a character. For example: SELECT LTRIM (&apos ;the apple') AS 'The