Guest User

Untitled

a guest
Jan 26th, 2016
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MySQL 1.16 KB | None | 0 0
  1. CREATE DEFINER=`ccbrenta_usuario`@`186.247.103.42` FUNCTION `SOUNDEX_SPLITTED`(`strValue` TINYTEXT, `strSeparator` TINYTEXT)
  2.     RETURNS tinytext CHARSET latin1
  3.     LANGUAGE SQL
  4.     DETERMINISTIC
  5.     NO SQL
  6.     SQL SECURITY INVOKER
  7.     COMMENT 'Executa um SOUNDEX separando por espaços.'
  8. BEGIN
  9.     DECLARE spaceFirst INT;
  10.     DECLARE spaceLast INT DEFAULT 0;
  11.     DECLARE strLength INT DEFAULT LENGTH(strValue);
  12.     DECLARE soundexPart TINYTEXT;
  13.     DECLARE soundexValue TINYTEXT;
  14.    
  15.     IF strValue RLIKE "[0-9]"
  16.     OR LENGTH(strValue) >= 255 THEN
  17.         RETURN NULL;
  18.     END IF;
  19.  
  20.     SET strValue = CONCAT(strValue, " ");
  21.     IF strSeparator IS NULL THEN
  22.         SET strSeparator = " ";
  23.     END IF;
  24.  
  25.     STR_LOOP:
  26.     WHILE spaceLast < strLength DO
  27.         SET spaceFirst = spaceLast + 1;
  28.         SET spaceLast = LOCATE(" ", strValue, spaceFirst);
  29.         SET soundexPart = SUBSTRING(strValue, spaceFirst, spaceLast - spaceFirst);
  30.  
  31.         IF LENGTH(soundexPart) <= 2 THEN
  32.             ITERATE STR_LOOP;
  33.         END IF;
  34.  
  35.         SET soundexValue = CONCAT_WS(strSeparator, soundexValue, SOUNDEX(soundexPart));
  36.     END WHILE;
  37.  
  38.     RETURN TRIM(soundexValue);
  39. END
Advertisement
Add Comment
Please, Sign In to add comment