Transact-SQL supports two forms of comment writing. Comments are ignored by the database engine, and are meant for people to read.
Comments are preceded by --
and are ignored until a new line is encountered:
-- This is a comment
SELECT *
FROM MyTable -- This is another comment
WHERE Id = 1;
Slash star comments begin with /*
and end with */
. All text between those delimiters is considered as a comment block.
/* This is
a multi-line
comment block. */
SELECT Id = 1, [Message] = 'First row'
UNION ALL
SELECT 2, 'Second row'
/* This is a one liner */
SELECT 'More';
Slash star comments have the advantage of keeping the comment usable if the SQL Statement loses new line characters. This can happen when SQL is captured during troubleshooting.
Slash star comments can be nested and a starting /*
inside a slash star comment needs to be ended with a */
to be valid. The following code will result in an error
/*
SELECT *
FROM CommentTable
WHERE Comment = '/*'
*/
The slash star even though inside the quote is considered as the start of a comment. Hence it needs to be ended with another closing star slash. The correct way would be
/*
SELECT *
FROM CommentTable
WHERE Comment = '/*'
*/ */