Mysql中如何使用 “--”作為注釋起始標記

來源:互聯網
上載者:User

一些其他SQL資料庫採用“--”作為注釋開始標誌。MySQL伺服器採用“#”作為注釋起始字元。對於MySQL伺服器,也能使用C風格的注釋:/*該處為注釋*/。

MySQL伺服器3.23.3和更高版本支援“--”注釋風格,但要求注釋後面跟1空格(或控制字元,如新行)。之所以要求使用空格,是為了防止與自動產生SQL查詢有關的問題,它採用了類似下面的代碼,其中,自動為“!payment!”插入“payment”的值:

UPDATE account SET credit=credit-!payment!

考慮一下,如果“payment”的值為負數如“-1”時會出現什麼情況:

UPDATE account SET credit=credit--1

在SQL中“credit--1”是合法的運算式,但是,如果“--1”被解釋為注釋開始,部分運算式將被捨棄。其結果是,運算式的意義與預期的意義完全不同。

UPDATE account SET credit=credit該語句不會對值作任何更改!這表明,允許注釋以“--”開始會產生嚴重後果。

採用MySQL伺服器3.23.3和更高版本中的這類注釋方法,“credit--1”實際上很安全。

另一個安全特性是,mysql命令列用戶端將刪除所有以“--”開頭的行。

僅當使用高於3.23.3的MySQL時,下述資訊才有意義:

如果有1個文字檔形式的SQL程式,該檔案包含“--”注釋,應按下述方式使用replace工具 + 生產力,將其轉換為使用“#”字元的注釋:

shell> replace " --" " #" < text-file-with-funny-comments.sql \
| mysql db_name

而不是通常的:

shell> mysql db_name < text-file-with-funny-comments.sql

你也可以編輯注釋檔案,將“--”注釋更改為“#”注釋:

shell> replace " --" " #" -- text-file-with-funny-comments.sql

使用下述命令將其改回去:

shell> replace " #" " --" -- text-file-with-funny-comments.sql

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.