w3resource

AdventureWorks Database: Find the position of the string 'yellow'

SQL Query - AdventureWorks: Exercise-59 with Solution

59. From the following table write a SQL query to locate the position of the string "yellow" where it appears in the product name.

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 --

Click to view Full table

Sample Solution:

-- Selecting the 'name' column and the position of the substring 'Yellow' within the 'name' column as "String Position"
SELECT name, strpos(name,'Yellow') as "String Position" 

-- From the Production schema's Product table
FROM production.product

-- Filtering the results to include only rows where the position of the substring 'Yellow' within the 'name' column is greater than 0
-- The strpos() function returns the position of the first occurrence of the specified substring within the specified string
-- If the substring 'Yellow' is not found within the 'name' column, strpos() returns 0
-- Therefore, the condition 'strpos(name,'Yellow')>0' ensures that only rows with 'Yellow' in the name are selected
WHERE strpos(name,'Yellow')>0;

Explanation:

  • The SQL query retrieves data from the Product table within the Production schema.
  • It selects two columns: name and the position of the substring 'Yellow' within the name column, aliased as "String Position".
  • The WHERE clause filters the results to include only rows where:
    • The position of the substring 'Yellow' within the name column (as determined by the strpos() function) is greater than 0.
  • The strpos() function returns the position of the first occurrence of the specified substring within the specified string. If the substring is not found, it returns 0.
  • Therefore, the condition strpos(name,'Yellow')>0 ensures that only rows where 'Yellow' is found within the name column are selected.

Sample Output:

name                         |String Position|
-----------------------------+---------------+
Paint - Yellow               |              9|
Road-550-W Yellow, 38        |             12|
Road-550-W Yellow, 40        |             12|
Road-550-W Yellow, 42        |             12|
Road-550-W Yellow, 44        |             12|
Road-550-W Yellow, 48        |             12|
ML Road Frame-W - Yellow, 38 |             19|
ML Road Frame-W - Yellow, 40 |             19|
ML Road Frame-W - Yellow, 42 |             19|
ML Road Frame-W - Yellow, 44 |             19|
ML Road Frame-W - Yellow, 48 |             19|
...

SQL AdventureWorks Editor:

Practice Online


Contribute your code and comments through Disqus.

Previous: Employee name, email separated by a new line.
Next: Join the name, color etc.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Become a Patron!

Follow us on Facebook and Twitter for latest update.

It will be nice if you may share this link in any developer community or anywhere else, from where other developers may find this content. Thanks.

https://w3resource.com/sql-exercises/adventureworks/sql-adventureworks-exercise-59.php