Here is the SQL that goes with the demo.
-- Database by Doug -- Douglas Kline -- 5/11/2016 -- LIKE use northwind -- the LIKE statement is a logical operator that evaluates -- if a set of characters matches a pattern -- if it matches, it returns true -- otherwise it returns false -- since LIKE returns a logical value, -- it is common to use LIKE in the WHERE clause, -- which expects logical expressions -- if you don't know the WHERE clause, -- check out another video on my channel -- let's start with a simple example from the products table SELECT ProductName, ProductID, Unitprice FROM Products ORDER BY ProductName -- notice that there are 77 products -- now, let's limit that to all the products -- whose names start with the letter A SELECT ProductName, ProductID, Unitprice FROM Products WHERE ProductName LIKE 'a%' ORDER BY ProductName -- now all the products whose names end in A SELECT ProductName, ProductID, Unitprice FROM Products WHERE ProductName LIKE '%a' ORDER BY ProductName -- now all the products that have an A anywhere SELECT ProductName, ProductID, Unitprice FROM Products WHERE ProductName LIKE '%a%' ORDER BY ProductName -- and all the ones without an A anywhere SELECT ProductName, ProductID, Unitprice FROM Products WHERE ProductName NOT LIKE '%a%' ORDER BY ProductName -- as you can see, the % character is special -- it's a "wildcard" character, i.e., -- it can "match" on characters -- before we go on, the general format of the LIKE operator is -- [characterExpression] LIKE [formatExpression] -- the [characterExpression] is the part that will be tested -- the [formatExpression] defines the "test", or the format -- used to test the [characterExpression] -- in the example above: -- ProductName LIKE '%a%' -- ProductName is the [characterExpression] -- '%a%' is the [formatExpression] -- ProductName LIKE '%a%' -- [characterExpression] LIKE [formatExpression] -- -- its best to think of LIKE as a comparison operator, -- similar to <, >, <=, >=, !=, etc. -- e.g., WHERE age > 35 -- the expressions on the left and right are compared, -- based on a set of rules -- there are two main special characters for LIKE -- special character #1: % can match on zero or more characters -- for demonstration purposes -- a record with the word Match! is shown if the WHERE -- clause evaluates to true SELECT 'Match!' WHERE 1=1 SELECT 'Match!' WHERE 1=2 -- some examples... SELECT 'Match!' WHERE 'Fred' LIKE 'F%' -- yes, Fred starts with F -- the F matches on F, -- and the % matches on 'red' SELECT 'Match!' WHERE 'Fred' LIKE 'S%' -- no Fred doesn't start with S -- note that LIKE is case insensitive SELECT 'Match!' WHERE 'Fred' LIKE 'f%' SELECT 'Match!' WHERE 'fred' LIKE 'F%' -- what about this SELECT 'Match!' WHERE 'F' LIKE 'F%' -- yes, it matches -- in this case, the F matches on 'F' -- and the '%' matches on '', i.e., nothing -- again, % matches on *zero* or more characters -- how about this one SELECT 'Match!' WHERE 'Fred' LIKE 'F%d' -- must start with F and end with d, any number of characters -- or this SELECT 'Match!' WHERE 'F' LIKE 'F%' -- or this SELECT 'Match!' WHERE 'Fred' LIKE '%r%' -- must contain an r, any number of characters -- or this SELECT 'Match!' WHERE 'Fred' LIKE '%f%' -- must contain an f, any number of characters -- or this SELECT 'Match!' WHERE 'F' LIKE '%ed' -- must end in ed, any number of characters -- and of course, most characters are NOT special -- and must match exactly SELECT 'Match!' WHERE 'Fred' LIKE 'Fred' -- but with no special characters -- it may make more sense to do this: SELECT 'Match!' WHERE 'Fred' = 'Fred' -- special character #2: _ (underscore) matches exactly one character SELECT 'Match!' WHERE 'Fred' LIKE '____' -- 4 underscores -- must have exactly 4 characters SELECT 'Match!' WHERE '1F7.' LIKE '____' -- 4 underscores -- must have exactly 4 characters SELECT 'Match!' WHERE 'Fred' LIKE '___' -- 3 underscores -- must have exactly 3 characters SELECT 'Match!' WHERE 'Fred' LIKE 'F___' -- 3 underscores -- must start with F, and have exactly 4 characters SELECT 'Match!' WHERE 'Fred' LIKE 'F__d' -- 2 underscores -- must start with F, end in d, and have exactly 4 characters -- combining the special characters SELECT 'Match!' WHERE 'Frederick' LIKE 'F__%' -- 2 underscores -- must start with F and have at least 3 characters SELECT 'Match!' WHERE 'Frederick' LIKE '%_d_%' -- must contain a d -- d must not be the first or last letter -- implies at least 3 characters -- in summary -- LIKE is a comparison operator -- is compares a character string to a format string -- % is a special character that matches on zero or more characters -- _ is a special character that matches on exactly one character -- other characters must match exactly -- remember, digits and most punctuation are characters -- thanks for watching -- Database by Doug -- Douglas Kline -- 5/11/2016 -- LIKE
No comments:
Post a Comment