Databases Reporting with SQL Working with Text Replacing Strings

REPLACE function

In the customers table there's an email column. Write a query that will retrieve all email addresses but will replace the @ symbol with <at> so they all look like andrew<at>teamtreehouse.com. Alias it as obfuscated_email .

My answer: SELECT REPLACE(<email>, <"@">, <at>) FROM <customers> AS "obfuscated_email"

I am not quite getting this. Can someone explain what I am doing wrong please

1 Answer

Brendan Whiting
MOD
Brendan Whiting
Front End Web Development Treehouse Moderator 84,062 Points

First of all, there are a few problems with the angle brackets <>. The only purpose of the angle brackets in this query should be as a part of the string "<at>" that we're using to replace the "@" symbol. Everything other place in this query we don't need angle brackets.

In the REPLACE function:

  • First argument: The column isn't called <email>, it's just email.
  • 2nd argument: we just want the @ symbol in parens "@", not enclosed in angle brackets.
  • 3rd argument: this is where we want the angle brackets, but the argument still needs to be wrapped in quotes because it's a string: "<at>"

Also, the table name is just customers not <customers>. And we need to alias the column right after the WHERE function, not later.

SELECT REPLACE(email, "@", "<at>") AS "obfuscated_email" FROM customers;