本文記錄從 MSSQL 轉向 MySQL 學習過程中,對兩者常用函數的對比心得,涵蓋數學、字串、日期時間、條件判斷、系統資訊、加密等類別,並附上實際測試範例。
SELECT MOD(31, 8); -- 返回 7SELECT TRUNCATE(1.32, 1); -- 返回 1.3SELECT HEX('test'); -- 74657374LEN 或 DATALENGTH。CONCAT + ISNULL 組合。STUFF()。REPLICATE 更強。LTRIM(RTRIM())。CHARINDEX。NOW(), CURDATE(), UTC_DATE(), MONTHNAME(), QUARTER(), EXTRACT(type FROM date)(對應 MSSQL DATEPART)。TIME_TO_SEC() / SEC_TO_TIME() 互為反函數。DATE_ADD(), DATE_SUB(), ADDDATE(), SUBDATE(), DATEDIFF(),語法比 MSSQL 單純的 DATEADD/DATEDIFF 更靈活。DATE_FORMAT(), TIME_FORMAT(), GET_FORMAT()。NULLIF(兩值相等回傳 NULL)。VERSION(), CONNECTION_ID(), DATABASE()/SCHEMA(), USER()/CURRENT_USER() 等。SHOW PROCESSLIST / SHOW FULL PROCESSLIST:查看執行緒狀態,root 可見所有連線。CHARSET(str), COLLATION(str):查看字元集與排序規則。LAST_INSERT_ID():批次插入時只返回第一筆自增 ID,與 MSSQL SCOPE_IDENTITY()/IDENT_CURRENT() 行為不同,需特別注意。PASSWORD():MySQL 內部認證用,單向不可逆,不建議應用層使用。MD5():32 位十六進位雜湊。ENCODE() / DECODE():對稱加解密,互為反函數。FORMAT(x, n):千分位格式化並四捨五入。CONV(N, from, to):進制轉換。INET_ATON() / INET_NTOA():IP 與整數互轉。GET_LOCK() / RELEASE_LOCK():應用層鎖機制。BENCHMARK(count, expr):效能測試,重複執行表達式。CAST / CONVERT:型別轉換,支援 BINARY, CHAR, DATE, DATETIME, DECIMAL, SIGNED, UNSIGNED 等。my.ini 中的 default-character-set 與 character-set-server,重啟服務生效。SHOW VARIABLES LIKE 'character_set_%'。