AdventureWorks Database: Product names that begin with the prefix chain
56. From the following table write a query in SQL to return all the product names with at least one word starting with the prefix chain in the Name column.
Sample table: Production.Product
productid|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*" '
-- 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*" '
-- This query searches for products with names that start with 'Chain'
-- The double quotes ("") are used to indicate an exact phrase match
-- The asterisk (*) is used as a wildcard to match any suffix after 'Chain'
WHERE to_tsvector(name) @@ to_tsquery(' "Chain*" ');
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*" '.
- 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*" ', where 'Chain*' indicates that the search term should start with 'Chain' and '*' is a wildcard to match any suffix after 'Chain'.
- The double quotes ("") are used to indicate an exact phrase match, ensuring that only names starting with 'Chain' are matched.
Sample Output:
name |color | -----------+------+ Chain Stays| | Chain |Silver|
Go to:
PREV : Name with the words Mountain and Black.
NEXT : Product with prefixes of either chain or full.
SQL AdventureWorks Editor:
Practice Online
Contribute your code and comments through Disqus.
What is the difficulty level of this exercise?
Test your Programming skills with w3resource's quiz.
