How to Check if String Contains Certain Data in MySQL

Preet Sanghavi Feb 12, 2024
  1. Check if String Contains Certain Data in MySQL Table Using SELECT With the LOCATE() Function
  2. Check if String Contains Certain Data in MySQL Table Using SELECT With INSTR() Function
  3. Check if String Contains Certain Data in MySQL Table Using SELECT With the LIKE Clause
  4. Conclusion
How to Check if String Contains Certain Data in MySQL

In database management, scenarios often arise where you need to filter or retrieve data based on the presence of a specific string within a column. This could involve searching for keywords, validating user input, or identifying patterns within your dataset.

Knowing how to effectively perform these checks enhances your ability to extract meaningful insights from your MySQL tables.

In this comprehensive guide, we’ll explore three methods: using the LOCATE() function, the INSTR() function, and the LIKE clause. Each method has its unique strengths, and understanding when and how to employ them will enable you to tackle a wide range of string-matching scenarios.

Check if String Contains Certain Data in MySQL Table Using SELECT With the LOCATE() Function

One effective method to check if a particular string occurs in a MySQL table is by utilizing the SELECT statement along with the LOCATE() function.

The LOCATE() function in MySQL is employed to find the position of the first occurrence of a substring within a given string. Its syntax is as follows:

LOCATE(substring, string);

Where:

  • substring: The substring you want to search for.
  • string: The target string in which you want to find the substring.

The function returns the position of the first occurrence of the substring in the string. If the substring is not found, it returns 0.

Implement SELECT With LOCATE() for String Occurrence Query

Let’s consider a practical example where we have a table named products with a column product_name. Our objective is to check if the string widget occurs in any of the product names using the LOCATE() function.

-- Create the products table
CREATE TABLE products (
    product_id INT PRIMARY KEY,
    product_name VARCHAR(255)
);

-- Insert sample data
INSERT INTO products (product_id, product_name)
VALUES
    (1, 'Gadget Widget'),
    (2, 'Electronic Widget'),
    (3, 'Toy Widget'),
    (4, 'Tool Set');

Now, let’s employ the SELECT statement along with the LOCATE() function to check if the widget occurs in any of the product names.

-- Check if "widget" occurs in any product name
SELECT * FROM products WHERE LOCATE('widget', product_name) > 0;

Here, the SELECT statement retrieves all columns (*) from the products table where the LOCATE() function returns a position greater than 0. This ensures that the substring widget is found in the product_name column.

The LOCATE('widget', product_name) part checks if the substring widget is present in the product_name column.

Code Output:

+------------+-------------------+
| product_id | product_name      |
+------------+-------------------+
|          1 | Gadget Widget     |
|          2 | Electronic Widget |
|          3 | Toy Widget        |
+------------+-------------------+

The output includes all rows where the string widget is found in the product_name column. Rows with product names like Tool Set are excluded from the result.

Check if String Contains Certain Data in MySQL Table Using SELECT With INSTR() Function

Another method to check whether a string occurs in a table involves using the SELECT statement with the INSTR() function. This function is similar to LOCATE() and is employed to determine the position of the first occurrence of a substring within a given string.

Its syntax is as follows:

INSTR(string, substring);

Where:

  • string: The target string in which you want to find the substring.
  • substring: The substring you want to search for.

The function returns the index value of the first occurrence of the substring in the string. If the substring is not found, it returns 0.

Implement SELECT With INSTR() for String Occurrence Query

Building upon the previous example with the products table and the objective of checking if the string widget occurs in any product names, we’ll now use the INSTR() function.

-- Check if "widget" occurs in any product name
SELECT * FROM products WHERE INSTR(product_name, 'widget') > 0;

Similar to the previous example, the SELECT statement retrieves all columns (*) from the products table where the INSTR() function returns an index value greater than 0. This ensures that the substring widget is found in the product_name column.

The INSTR(product_name, 'widget') part checks if the substring widget is present in the product_name column.

Code Output:

+------------+-------------------+
| product_id | product_name      |
+------------+-------------------+
|          1 | Gadget Widget     |
|          2 | Electronic Widget |
|          3 | Toy Widget        |
+------------+-------------------+

The output includes all rows where the string widget is found in the product_name column, similar to the previous example using the LOCATE() function.

Check if String Contains Certain Data in MySQL Table Using SELECT With the LIKE Clause

Yet another effective method for checking whether a string occurs in a table involves using the SELECT statement with the LIKE clause. This approach provides a flexible way to perform pattern-matching searches within a specified column.

The LIKE clause in MySQL is used to search for a specified pattern within a column. It allows the use of wildcards to represent unknown characters.

The basic syntax is as follows:

SELECT * FROM table_name WHERE column_name LIKE pattern;

Where:

  • table_name: The name of the table you are querying.
  • column_name: The name of the column you want to search.
  • pattern: The pattern you want to match.

The % symbol is used as a wildcard to represent any sequence of characters, and _ represents a single character.

Implement SELECT With LIKE for String Occurrence Query

Let’s consider the same example with the products table and the goal of checking if the string widget occurs in any product names using the LIKE clause.

-- Check if "widget" occurs in any product name
SELECT * FROM products WHERE product_name LIKE '%widget%';

The SELECT statement retrieves all columns (*) from the products table, where the LIKE clause is used to match any occurrence of the substring widget in the product_name column.

The pattern %widget% signifies that widget can appear at the beginning, middle, or end of the product_name.

Code Output:

+------------+-------------------+
| product_id | product_name      |
+------------+-------------------+
|          1 | Gadget Widget     |
|          2 | Electronic Widget |
|          3 | Toy Widget        |
+------------+-------------------+

The output includes all rows where the string widget is found in the product_name column, matching the previous examples with the LOCATE() and INSTR() functions.

Use Wildcards With LIKE for More Advanced Searches

The LIKE clause becomes even more powerful when combined with wildcards. Let’s explore some variations:

Using % Wildcard for Any Characters

The % wildcard represents any sequence of characters. In our case, let’s say we want to find products where the name ends with Widget:

-- Find products where the name ends with "Widget"
SELECT * FROM products WHERE product_name LIKE '%Widget';

The pattern %Widget matches any product_name ending with Widget.

Code Output:

+------------+-------------------+
| product_id | product_name      |
+------------+-------------------+
|          1 | Gadget Widget     |
|          2 | Electronic Widget |
|          3 | Toy Widget        |
+------------+-------------------+

Using _ Wildcard for a Single Character

The _ wildcard represents a single character. Suppose we want to find products with names that contain Gadget followed by any single character and then Widget:

-- Find products with names like "GadgetXWidget"
SELECT * FROM products WHERE product_name LIKE 'Gadget_Widget';

The pattern Gadget_Widget matches any product_name like GadgetXWidget, where X can be any single character.

Code Output:

+------------+---------------+
| product_id | product_name  |
+------------+---------------+
|          1 | Gadget Widget |
+------------+---------------+

Combining Wildcards for Flexible Matches

Now, let’s say we want to find products where the name starts with Toy and ends with Widget, with any characters in between:

-- Find products with names like "ToyXYZWidget"
SELECT * FROM products WHERE product_name LIKE 'Toy%Widget';

The pattern Toy%Widget matches any product_name starting with Toy and ending with Widget, with any characters in between.

Code Output:

+------------+--------------+
| product_id | product_name |
+------------+--------------+
|          3 | Toy Widget   |
+------------+--------------+

Using the SELECT statement with the LIKE clause in MySQL provides a versatile way to check for string occurrences in a table. Whether you need exact matches or want to perform pattern-based searches, the LIKE clause, along with wildcards, allows you to tailor your queries to meet specific requirements.

Conclusion

In database management with MySQL, the ability to efficiently check whether a string occurs in a table is a fundamental skill. Throughout this article, we explored three robust methods for achieving this task: using the LOCATE() function, the INSTR() function, and the LIKE clause in combination with wildcards.

The LOCATE() function proved effective in determining the position of a substring within a string. Its counterpart, the INSTR() function, provided a similar capability but with an emphasis on returning the index value of the first occurrence.

The LIKE clause is also a flexible tool, enabling pattern-based searches within a specified column. The inclusion of % and _ wildcards extended the functionality of the LIKE clause, allowing for more nuanced and advanced string matching.

Whether searching for specific endings, beginnings, or patterns with arbitrary characters, the LIKE clause proved adaptable to a variety of string-matching requirements.

Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

Related Article - MySQL Query