Tải bản đầy đủ (.pdf) (5 trang)

The Language of SQL- P20 pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (114.11 KB, 5 trang )

or you can use this equivalent statement that utilizes the IN operator:
SELECT
CustomerName,
State
FROM Orders
WHERE State IN ('IL', 'NY' )
In either case, the data retrieved is:
CustomerName State
William Smith IL
Brenda Harper NY
Notice that commas are used to separate all values within the parentheses fol-
lowing the
IN keyword.
The usefulness of the
IN operator may not be obvious in this example, where
only two states are listed. However, the
IN can just as easily be used in situations
where you want to list dozens of specific values. This greatly reduces the amount
of typing required for such a statement. Another handy use for the IN operator
comes in situations where you want to use data from Excel in a SQL statement. If
you want to obtain multiple values from adjacent cells in a spreadsheet for your
SQL statement, Excel allows you to copy those values with a comma delimiter.
This result can then be pasted inside the parentheses following the
IN operator.
As with the
BETWEEN operator, the NOT operator can be used with the IN,as
shown in this example:
SELECT
CustomerName,
State
FROM Orders


WHERE State NOT IN ('IL', 'NY')
This retrieves this data:
CustomerName State
Natalie Lopez CA
The IN Operator 81
One final note about the IN operator. There is a second way to use the IN,
which is substantially different from the syntax just discussed. In the second
format of the
IN operator, an entire SELECT statement is specified within the
parentheses, allowing the individual values to be created logically when needed.
This is called a subquery, and it will be covered in detail in Chapter 14.
Boolean Logic and NULL Values
At the start of this chapter, I stated that the Boolean logic in SQL evaluates
complex expressions as either true or false. This assertion was not completely
correct. When evaluating the conditions in a
WHERE clause, there are actually
three possibilities: true, false, and unknown. The possibility of unknown derives
from the fact that columns in SQL databases are sometimes allowed to have a
NULL value. As mentioned in Chapter 1, NULL values are those for which there
is an absence of data.
SQL provides a special keyword to test for the presence of NULL values for a
column specified in a
WHERE clause. The keyword is IS NULL. Let’s look at an
example taken from the following Products table:
ProductID ProductDescription Weight
1 Printer A NULL
2 Printer B 0
3 Monitor C 2
4 Laptop D 4
For this example, you have to imagine that as rows are added to the Products

table, they are initially not given any value in the Weight column. They are
initially given a value of NULL, and a user of the system later assigns a weight to
the product.
Let’s say that you attempt to use the following
SELECT to find products missing
a weight:
SELECT
ProductDescription,
Weight
FROM Products
WHERE Weight ¼ 0
Chapter 8

Boolean Logic82
This would return:
ProductDescription Weight
Printer B 0
This is not quite what you want. A weight equal to zero is not the same as a
weight with a NULL value. To correct this, you need to issue:
SELECT
ProductDescription,
Weight
FROM Products
WHERE Weight ¼ 0
OR Weight IS NULL
This returns:
ProductDescription Weight
Printer A NULL
Printer B 0
The IS NULL keyword can also be negated as IS NOT NULL, which allows you to

retrieve all rows that do not have NULL for the specified column.
It should be mentioned that the
ISNULL function, discussed in Chapter 4, can
provide an alternative to the
IS NULL keyword. The equivalent of the previous
SELECT statement, utilizing the ISNULL function is:
SELECT
ProductDescription,
Weight
FROM Products
WHERE ISNULL(Weight, 0) ¼ 0
This SELECT retrieves the same two rows. The ISNULL function converts all
values for the Weight column with a value of NULL to 0. Since the
WHERE
clauses tests for a value of 0, it, in effect, tests for values of 0 or NULL.
Boolean Logic and NULL Values 83
You can also combine the ISNULL function and the IS NULL keyword in a
single
SELECT statement, such as:
SELECT
ProductDescription,
ISNULL (Weight, 0) AS 'Weight'
FROM Products
WHERE Weight ¼ 0
OR Weight IS NULL
This produces this dat a:
ProductDescription Weight
Printer A 0
Printer B 0
Looking Ahead

This chapter covered the important topic of how to create complex expressions
of selection logic. The basic Boolean operators used in this endeavor were
AND,
OR, and NOT. We also discussed the BETWEEN and IN operators, which allow for
a more concise statement of the
AND and OR operators in certain situations.
Parentheses are another essential tool in the formulation of complex expressions.
By using parentheses or multiple sets of parentheses, you can create almost every
imaginable logical condition. Finally, we talked about how to deal with NULL
values when selecting data.
In our next chapter, we’re going to take an interesting detour into some alter-
native ways to specify selection criteria. We’re first going to look at the topic of
pattern matching. This will allow you to match by portions of a word or phrase
and to do such things as find all products that contain the word ‘‘white.’’ The
second half of the chapter will turn to the possibility of matching by the sound of
a word or phrase. This, for example, will let you find all customers who have a
first name that sounds like Haley, even if the name is spelled Hailey.
Chapter 8

Boolean Logic84
chapter 9
Inexact Matches
Keywords Introduced: LIKE,
SOUNDEX, DIFFERENCE
I would like to now turn to two situations in which the data to be retrieved is not
precisely defined. In the first circumstance, we will look at the need to retrieve
data based on inexact matches with words or phrases. For example, you may be
interested in finding customers whose name contains the word ‘‘bank.’’
In the second situation, we will extend the idea of inexact matches to include the
possibility of matching by the sound of a word or phrase. For instance, you may

be interested in customers whose name sounds like ‘‘Smith,’’ even though it may
not be spelled exactly that way.
Pattern Matching
Let’s first look at inexact matches within phrases, which is often referred to as
pattern matching. In SQL, the
LIKE operator is utilize d in th e WHERE clause to
enable you to find matches against parts of a column value. The
LIKE ope rator
requires the use of special wildcard characters to specify exactly how the match is
to work. Let’s start with an example from the Movies table shown on the next page.
Our first example of a
SELECT statement with a LIKE operator is:
SELECT
MovieTitle AS 'Movie'
FROM Movies
WHERE MovieTitle LIKE '%LOVE%'
85

Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay
×