(mysql.info) ansi-diff-comments
Info Catalog
(mysql.info) ansi-diff-views
(mysql.info) differences-from-ansi
1.9.5.7 '`--'' as the Start of a Comment
........................................
Standard SQL uses the C syntax `/* this is a comment */' for comments,
and MySQL Server supports this syntax as well. MySQL also support
extensions to this syntax that allow MySQL-specific SQL to be embedded
in the comment, as described in comments.
Standard SQL uses ‘-’ as a start-comment sequence. MySQL Server uses
‘`#'’ as the start comment character. MySQL Server 3.23.3 and up
also supports a variant of the ‘`--'’ comment style. That is, the
‘`--'’ start-comment sequence must be followed by a space (or by a
control character such as a newline). The space is required to prevent
problems with automatically generated SQL queries that use constructs
such as the following, where we automatically insert the value of the
payment for `!payment!':
UPDATE account SET credit=credit-!payment!
Consider about what happens if `payment' has a negative value such as
`-1':
UPDATE account SET credit=credit--1
`credit--1' is a legal expression in SQL, but ‘`--'’ is interpreted
as the start of a comment, part of the expression is discarded. The
result is a statement that has a completely different meaning than
intended:
UPDATE account SET credit=credit
The statement produces no change in value at all! This illustrates that
allowing comments to start with ‘`--'’ can have serious
consequences.
Using our implementation of require a following space for ‘`--'’ to
be recognized as a start-comment sequence in MySQL Server 3.23.3 and up,
`credit--1' is actually safe.
Another safe feature is that the `mysql' command-line client ignores
lines that start with ‘`--'’.
The following information is relevant only if you are running a MySQL
version earlier than 3.23.3:
If you have an SQL script in a text file that contains ‘`--'’
comments, you should use the `replace' utility as follows to convert
the comments to use ‘`#'’ characters before executing the script:
shell> replace " --" " #" < text-file-with-funny-comments.sql \
| mysql DB_NAME
That is safer than executing the script in the usual way:
shell> mysql DB_NAME < text-file-with-funny-comments.sql
You can also edit the script file `in place' to change the ‘`--'’
comments to ‘`#'’ comments:
shell> replace " --" " #" -- text-file-with-funny-comments.sql
Change them back with this command:
shell> replace " #" " --" -- text-file-with-funny-comments.sql
See replace-utility.
Info Catalog
(mysql.info) ansi-diff-views
(mysql.info) differences-from-ansi
automatically generated byinfo2html