AdventureWorks Database: Product with prefixes of either chain or full
57. From the following table write a query in SQL to return all category descriptions containing strings with prefixes of either chain or full.
Sample table: Production.Productproductid|name |productnumber|makeflag|finishedgoodsflag|color |safetystocklevel|reorderpoint|standardcost|listprice|size|sizeunitmeasurecode|weightunitmeasurecode|weight |daystomanufacture|productline|class|style|productsubcategoryid|productmodelid|sellstartdate |sellenddate |discontinueddate|rowguid |modifieddate | ---------+--------------------------------+-------------+--------+-----------------+------------+----------------+------------+------------+---------+----+-------------------+---------------------+-------+-----------------+-----------+-----+-----+--------------------+--------------+-----------------------+-----------------------+----------------+------------------------------------+-----------------------+ 1|Adjustable Race |AR-5381 |false |false | | 1000| 750| 0| 0| | | | | 0| | | | | |2008-04-30 00:00:00.000| | |694215b7-08f7-4c0d-acb1-d734ba44c0c8|2014-02-08 10:01:36.827| 2|Bearing Ball |BA-8327 |false |false | | 1000| 750| 0| 0| | | | | 0| | | | | |2008-04-30 00:00:00.000| | |58ae3c20-4f3a-4749-a7d4-d568806cc537|2014-02-08 10:01:36.827| 3|BB Ball Bearing |BE-2349 |true |false | | 800| 600| 0| 0| | | | | 1| | | | | |2008-04-30 00:00:00.000| | |9c21aed2-5bfa-4f18-bcb8-f11638dc2e4e|2014-02-08 10:01:36.827| 4|Headset Ball Bearings |BE-2908 |false |false | | 800| 600| 0| 0| | | | | 0| | | | | |2008-04-30 00:00:00.000| | |ecfed6cb-51ff-49b5-b06c-7d8ac834db8b|2014-02-08 10:01:36.827| 316|Blade |BL-2036 |true |false | | 800| 600| 0| 0| | | | | 1| | | | | |2008-04-30 00:00:00.000| | |e73e9750-603b-4131-89f5-3dd15ed5ff80|2014-02-08 10:01:36.827| 317|LL Crankarm |CA-5965 |false |false |Black | 500| 375| 0| 0| | | | | 0| |L | | | |2008-04-30 00:00:00.000| | |3c9d10b7-a6b2-4774-9963-c19dcee72fea|2014-02-08 10:01:36.827| 318|ML Crankarm |CA-6738 |false |false |Black | 500| 375| 0| 0| | | | | 0| |M | | | |2008-04-30 00:00:00.000| | |eabb9a92-fa07-4eab-8955-f0517b4a4ca7|2014-02-08 10:01:36.827| -- more --
Sample Solution:
-- Selecting specific columns 'Name' and 'Color' from the Product table
SELECT Name, color
-- From the Production schema's Product table
FROM Production.Product
-- Filtering the results to include only rows where the text search vector of the 'Name' column matches the text search query ' "chain*" | "full*" '
-- The to_tsvector() function converts the 'Name' column to a text search vector
-- The @@ operator checks if the text search vector matches the text search query
-- The to_tsquery() function creates a text search query from the string ' "chain*" | "full*" '
-- This query searches for products with names that start with either 'chain' or 'full'
-- The double quotes ("") are used to indicate an exact phrase match for each term
-- The vertical bar (|) represents the logical OR operator, indicating that the search should match either term
-- The asterisk (*) is used as a wildcard to match any suffix after 'chain' or 'full'
WHERE to_tsvector(name) @@ to_tsquery('"chain*" | "full*"');
Explanation:
- The SQL query retrieves data from the Product table within the Production schema.
- It selects two columns: Name and color.
- The WHERE clause filters the results to include only rows where:
- The text search vector of the Name column matches the text search query ' "chain*" | "full*" '.
- The to_tsvector() function converts the Name column to a text search vector, which is a preprocessed representation of the text that is optimized for searching.
- The @@ operator checks if the text search vector matches the text search query.
- The to_tsquery() function creates a text search query from the string ' "chain*" | "full*" ', where '"chain*"' and '"full*"' indicate that the search terms should start with 'chain' or 'full', respectively.
- The double quotes ("") are used to indicate an exact phrase match for each term.
- The vertical bar (|) represents the logical OR operator, indicating that the search should match either term.
- The asterisk (*) is used as a wildcard to match any suffix after 'chain' or 'full'.
Sample Output:
name |color | ---------------------+------+ Chain Stays | | Full-Finger Gloves, S|Black | Full-Finger Gloves, M|Black | Full-Finger Gloves, L|Black | Chain |Silver|
SQL AdventureWorks Editor:
Practice Online
Contribute your code and comments through Disqus.
Previous: Product names that begin with the prefix chain.
Next: Employee name, email separated by a new line.
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
- Weekly Trends and Language Statistics
- Weekly Trends and Language Statistics