ShareChiWai CheatSheet – From MSSQL/TSQL to MYSQL – Comment and Define Variable in Stored Procedure

最近參與了很多的Hack Event 很多時候都是使用MySQLBackEnd
因為很小Teammate有一個MSSQL Server 的空間可以給我們便用..
所以便常常用到MySQL
由於是Hack Event的關係…所以我們只有很小時間去完成想做的功能..
為了方便自己不用花時間搜尋一些自己之前解決過的問題
所以便決定寫低這些不太起眼..
但是有時候需要用時又可能突然間想不到的程式碼..
今天和大家分享的是 MSSQLMySQL 有一些Syntax的不同..方便自己Look Up.
第一個分別是 Comment
今天想在MySQLStored Procedure 上Comment out一些Code來做測試..
當我使用TSQL的Comment 語句後嘗試儲存時便出現錯誤信息了
TSQL/MSSQL我們可以便用”” 來Comment的們的SQL Code
E.g.

T-SQL

--This stored proccedure is used to...

MySQL我們需要使用 “##” 來Comment我們的SQLCode
E.G.
MySQL

## 在MySQL上這是用來Comment Out程式碼的

第二個問題是怎樣在Stored proceure內定義一些變數用來暫時儲存資料之用

T-SQL上我們可以使用DECLARE 之後用SELECTSETAssige 內容到這些變數上
E.G.
T-SQL

--Define Variable in T-SQL
DECLARE @TestingVariable AS VARCHAR(20) ='Hello'
--我們還可以用以下方法來Assign Variable的
--使用Select
SELECT @TestingVariable = 'How Are You'
SELECT @TestingVariable
-- 使用SET
SET @TestingVariable = '你好嗎?'
SELECT @TestingVariable
--或使用SQL Select statement
SELECT @TestingVariable = Field1
FROM Table1

--這個句子要確定他只return 一行的結果, 如果不是的話 他會把最後的record加進這個變數上

MySQL

##Define Variable in MySQL
SET @TestingVariable ='Hello';

##或使用SQL Select statement
SELECT Field1 INTO @TestingVariable
FROM Table1
##這個句子要確定他只return 一行的結果 , 如果不是的話 他只會出現錯誤

如果在T-SQL上希望在SQL句子上Assign 多過一個Variable我們可以

DECLARE @MaxScore Int=0
DECLARE @MinScore Int=0
DECLARE @AverageScore float=0

--Assign more than 1 variable in SQL Statement
SELECT @MaxScore = MAX(Score), @MinScore = MIN(Score), @Average = AVG(Score)
FROM ExamResult

MySQL我們可以

SET @MaxScore =0
SET @MinScore =0
SET @AverageScore =0

##Assign more than 1 variable in SQL Statement
SELECT @MaxScore = MAX(Score), @MinScore = MIN(Score), @Average = AVG(Score)
FROM ExamResult

今天的TSQL VS MySQL到為止..
將來有時間會Upload 更多有關TSQL VS MySQL的網誌敬請留意
Hope you find it useful

Leave a Reply