fuc_med.sql 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. DELIMITER $
  2. DROP FUNCTION IF EXISTS Decrypt_char $
  3. CREATE FUNCTION Decrypt_char(Varstring varchar(255)) RETURNS varchar(255)
  4. BEGIN
  5. DECLARE v_length INT DEFAULT 0;
  6. DECLARE v_Tmp varchar(255) default '';
  7. DECLARE v_Tmp2 char(1) default '';
  8. set v_length=CHAR_LENGTH(Varstring);
  9. WHILE v_length > 0 DO
  10. set v_Tmp2 = mid(Varstring,v_length,1);
  11. IF (ORD(v_Tmp2)> 130) THEN
  12. set v_Tmp = concat(v_Tmp, char(ORD(CONVERT(v_Tmp2 USING ucs2)) -2 USING ucs2));
  13. ELSE
  14. set v_Tmp = concat(v_Tmp,v_Tmp2);
  15. END IF;
  16. SET v_length = v_length - 1;
  17. END WHILE;
  18. RETURN REVERSE(v_Tmp);
  19. END $
  20. DELIMITER $
  21. DROP FUNCTION IF EXISTS Encrypt_char $
  22. CREATE FUNCTION Encrypt_char(Varstring varchar(255)) RETURNS varchar(255)
  23. BEGIN
  24. DECLARE v_length INT DEFAULT 0;
  25. DECLARE v_Tmp varchar(255) default '';
  26. DECLARE v_Tmp2 char(1) default '';
  27. set v_length=CHAR_LENGTH(Varstring);
  28. WHILE v_length > 0 DO
  29. set v_Tmp2 = mid(Varstring,v_length,1);
  30. IF (ORD(v_Tmp2)> 128) THEN
  31. set v_Tmp = concat(v_Tmp, char(ORD(CONVERT(v_Tmp2 USING ucs2)) +2 USING ucs2));
  32. ELSE
  33. set v_Tmp = concat(v_Tmp,v_Tmp2);
  34. END IF;
  35. SET v_length = v_length - 1;
  36. END WHILE;
  37. RETURN REVERSE(v_Tmp);
  38. END $