Click here to Skip to main content
65,938 articles
CodeProject is changing. Read more.
Articles / database / SQL-Server

SOUNDEX() in Microsoft SQL 2005

4.50/5 (2 votes)
6 Nov 2011CPOL1 min read 27.8K  
Use of soundex() function in SQL server
Many times, we need to search the database for e.g. to search the database for Customer names.

So the general Query to search a name ’Chapell’ will be:
SQL
SELECT CustomerName FROM t_CustomerMaster WHERE CustomerName =’Chapell’

Now imagine that the user searching the database enters ‘Chapple’ in the textbox and hits enter. He will hit enter and will not get any results. So usually, we use the LIKE operator in the WHERE clause and search for a substring.
SQL
SELECT CustomerName FROM t_CustomerMaster WHERE CustomerName LIKE ’%Chap%’

So this one will work and return all the names that contain the substring ‘Chap’. So the result set can contain anything like Chapel, Chapele, Richap, etc.

But will this search query still work if I search for ‘Chipell’ instead of ‘Chapell’?

The answer to this question is the SOUNDEX() function in Transact SQL.

The SOUNDEX() returns a four digit code for a varchar value passed to it. The same code is returned for all those names whose pronunciation is similar.

For example:
SQL
SOUNDEX(‘Smith’), SOUNDEX(‘Smythe’),SOUNDEX(‘Smithe’)
will return the same code.

More information on SOUNDEX() can be found at http://msdn.microsoft.com/en-us/library/aa259235(SQL.80).aspx.

As a result, the search query can be tuned to return the result set for ‘Chapell’ even if you search for ‘Chipell’. So re-constructing our search query by combining the power of LIKE and SOUNDEX() will return the same results even if the spelling Of ‘Chapell’ is changed
SQL
SELECT CustomerName
FROM t_CustomerMaster
WHERE (CustomerName LIKE ’%Chapell%’ OR (SOUNDEX(CustomerName) LIKE SOUNDEX(’%Chapell%’)))

The above query will return the same result set even if you use Chap, Chapel, Chapelle, Chipell instead of Chapell.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)