โดยปกติแล้ว ใน MSSQL ไม่มี Function MD5 มาให้ ผมได้ลองค้นหาทาง Internet แล้ว ทำให้พบว่า เราต้องสร้าง การใช้ Function Hash MD5 ดังกล่าวด้วยตัว ซึ่งผมก็เจอ Project นึงใน CODE PROJECT ซึ่งเป็นการเขียน Function MD5 สำหรับ MSSQL เอาไว้เรียบร้อยแล้ว หลังจากลองทดสอบ และใช้งานแล้ว พบว่า มีความสามารถเหมือน MD5 ของ MySQL เลย จึงอยากเขียนเก็บไว้ให้คนอื่นที่มีความต้องการอย่างเดียวกัน เก็บไว้ใช้บ้างตอนแรกโหลดไฟล์ xp_md5_dll.zip แล้วแตกไฟล์ xp_md5.dll ไปที่
C:\Program Files\Microsoft SQL Server\MSSQL\Binn
จากในไปที่ Query Analyzer แล้วพิมพ์
USE master;
EXEC sp_addextendedproc ‘xp_md5′, ‘xp_md5.dll’
ก็คือการ เอา dll ไปใช้ใน mssql นั่นเอง จากนั้น ให้ไปสร้าง User Defined Function ด้วย Script นี้ ในแต่ละ DB ที่เราจะใช้ หรือ สร้างไว้ที่ Master แล้วอ้างอิงเรียกใช้ก็ได้
1 2 3 4 5 6 7 | CREATE FUNCTION [dbo].[md5] (@DATA TEXT) RETURNS CHAR(32) AS BEGIN DECLARE @hash CHAR(32) EXEC master.dbo.xp_md5 @DATA, -1, @hash OUTPUT RETURN @hash END |
เวลาเรียกใช้ก็เพียงแค่
1 | SELECT dbo.md5('admin') |
มันก็จะ return มาเป็น
21232f297a57a5a743894a0e4a801fc3
ซึ่งจะเท่ากับของ MySQL เปรี๊ยบเลย
ขอดี ของการฝัง MD5 Function ใน MSSQL
ทำให้โปรแกรมเมอร์ต่างๆ ที่เขียนกันต่างภาษาไม่ต้องไปเขียน Function MD5 กันให้วุ่นวาย
ขอเสีย
ถ้าย้าย DB ก็ต้องมาหา Function กันใหม่ ผูกติดเกินไปสำหรับ Database
ลองโหลดไปลองเล่นกันดูได้ครับ
ขอบคุณ Vic Mackey
No comments yet.