I am trying to run a query in SQL 2008 by doing:
@query varchar(max)
SET @query = \'SELECT * FROM Table WHERE [Name] = \' \'Karl\' \' \'
EXEC(@query)
There are several ways that you can escape character data in SQL Server, some people even advocate the use of the QUOTENAME() functions.
If you really want to develop of solid understanding of this subject area then may I recommend that you take a look at what experienced SQL Server Developers consider to be essential reading with regard to the different methods you can use to incorporate Dynamic T-SQL into your coding.
The Curse and Blessings of Dynamic SQL