# Finding Similar Type of Names | Fuzzy Search in SQL

Fuzzy search is a technique used to find approximate matches for a given search query. In SQL, fuzzy search can be performed using the LIKE operator with wildcard characters or by using the SOUNDEX function.

Method 1: Using LIKE operator with wildcard characters

The LIKE operator can be used to perform a fuzzy search by using wildcard characters such as % and _. The % character represents any number of characters, while the _ character represents a single character.

For example, to find all names that are similar to "John", we can use the following query:

``````SELECT * FROM names WHERE name LIKE '%John%';
``````

This query will return all names that contain the string "John" anywhere in the name, such as "John", "Johnny", "Jonathan", etc.

Method 2: Using SOUNDEX function

The SOUNDEX function is a built-in function in SQL that returns a phonetic representation of a given string. This function can be used to find names that sound similar to a given name.

For example, to find all names that sound similar to "John", we can use the following query:

``````SELECT * FROM names WHERE SOUNDEX(name) = SOUNDEX('John');
``````

This query will return all names that have the same phonetic representation as "John", such as "Jon", "Joan", "Jean", etc.

Method 3: Using Levenshtein Distance

Levenshtein Distance is a measure of the difference between two strings. It is the minimum number of single-character edits (insertions, deletions, or substitutions) required to change one word into the other. In SQL, we can use the Levenshtein Distance algorithm to find similar names.

For example, to find all names that are similar to "John", we can use the following query:

``````SELECT * FROM names WHERE levenshtein(name, 'John') <= 2;
``````

This query will return all names that have a Levenshtein Distance of 2 or less from "John", which means they are similar to "John" with at most 2 single-character edits.