w3resource

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


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.



Follow us on Facebook and Twitter for latest update.