Advertisement
Guest User

Untitled

a guest
Jul 24th, 2016
181
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.40 KB | None | 0 0
  1. /**
  2. * ORIGINAL VERSION
  3. */
  4. SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='STRICT_TRANS_TABLES';
  5.  
  6. DELIMITER //
  7. DROP FUNCTION IF EXISTS str_random_lipsum;
  8. //
  9.  
  10. CREATE FUNCTION str_random_lipsum(p_max_words SMALLINT
  11. ,p_min_words SMALLINT
  12. ,p_start_with_lipsum TINYINT(1)
  13. )
  14. RETURNS VARCHAR(10000)
  15. NO SQL
  16. BEGIN
  17. /**
  18. * String function. Returns a random Lorum Ipsum string of nn words
  19. * <br>
  20. * %author Ronald Speelman
  21. * %version 1.0
  22. * Example usage:
  23. * SELECT str_random_lipsum(5,NULL,NULL) AS fiveWordsExactly;
  24. * SELECT str_random_lipsum(10,5,0) AS five-tenWords;
  25. * SELECT str_random_lipsum(50,10,1) AS startWithLorumIpsum;
  26. * See more complex examples and a description on www.moinne.com/blog/ronald
  27. *
  28. * %param p_max_words Number: the maximum amount of words, if no
  29. * min_words are provided this will be the
  30. * exaxt amount of words in the result
  31. * Default = 50
  32. * %param p_min_words Number: the minimum amount of words in the
  33. * result, By providing the parameter, you provide a range
  34. * Default = 0
  35. * %param p_start_with_lipsum Boolean:if "1" the string will start with
  36. * 'Lorum ipsum dolor sit amet.', Default = 0
  37. * %return String
  38. */
  39.  
  40. DECLARE v_max_words SMALLINT DEFAULT 50;
  41. DECLARE v_random_item SMALLINT DEFAULT 0;
  42. DECLARE v_random_word VARCHAR(25) DEFAULT '';
  43. DECLARE v_start_with_lipsum TINYINT DEFAULT 0;
  44. DECLARE v_result VARCHAR(10000) DEFAULT '';
  45. DECLARE v_iter INT DEFAULT 1;
  46. DECLARE v_text_lipsum VARCHAR(1500) DEFAULT 'a ac accumsan ad adipiscing aenean aliquam aliquet amet ante aptent arcu at auctor augue bibendum blandit class commodo condimentum congue consectetuer consequat conubia convallis cras cubilia cum curabitur curae; cursus dapibus diam dictum dignissim dis dolor donec dui duis egestas eget eleifend elementum elit enim erat eros est et etiam eu euismod facilisi facilisis fames faucibus felis fermentum feugiat fringilla fusce gravida habitant hendrerit hymenaeos iaculis id imperdiet in inceptos integer interdum ipsum justo lacinia lacus laoreet lectus leo libero ligula litora lobortis lorem luctus maecenas magna magnis malesuada massa mattis mauris metus mi molestie mollis montes morbi mus nam nascetur natoque nec neque netus nibh nisi nisl non nonummy nostra nulla nullam nunc odio orci ornare parturient pede pellentesque penatibus per pharetra phasellus placerat porta porttitor posuere praesent pretium primis proin pulvinar purus quam quis quisque rhoncus ridiculus risus rutrum sagittis sapien scelerisque sed sem semper senectus sit sociis sociosqu sodales sollicitudin suscipit suspendisse taciti tellus tempor tempus tincidunt torquent tortor tristique turpis ullamcorper ultrices ultricies urna ut varius vehicula vel velit venenatis vestibulum vitae vivamus viverra volutpat vulputate';
  47. DECLARE v_text_lipsum_wordcount INT DEFAULT 180;
  48. DECLARE v_sentence_wordcount INT DEFAULT 0;
  49. DECLARE v_sentence_start BOOLEAN DEFAULT 1;
  50. DECLARE v_sentence_end BOOLEAN DEFAULT 0;
  51. DECLARE v_sentence_lenght TINYINT DEFAULT 9;
  52.  
  53. SET v_max_words := COALESCE(p_max_words, v_max_words);
  54. SET v_start_with_lipsum := COALESCE(p_start_with_lipsum , v_start_with_lipsum);
  55.  
  56. IF p_min_words IS NOT NULL THEN
  57. SET v_max_words := FLOOR(p_min_words + (RAND() * (v_max_words - p_min_words)));
  58. END IF;
  59.  
  60. IF v_max_words < v_sentence_lenght THEN
  61. SET v_sentence_lenght := v_max_words;
  62. END IF;
  63.  
  64. IF p_start_with_lipsum = 1 THEN
  65. SET v_result := CONCAT(v_result,'Lorem ipsum dolor sit amet.');
  66. SET v_max_words := v_max_words - 5;
  67. END IF;
  68.  
  69. WHILE v_iter <= v_max_words DO
  70. SET v_random_item := FLOOR(1 + (RAND() * v_text_lipsum_wordcount));
  71. SET v_random_word := REPLACE(SUBSTRING(SUBSTRING_INDEX(v_text_lipsum, ' ' ,v_random_item),
  72. CHAR_LENGTH(SUBSTRING_INDEX(v_text_lipsum,' ', v_random_item -1)) + 1),
  73. ' ', '');
  74.  
  75. SET v_sentence_wordcount := v_sentence_wordcount + 1;
  76. IF v_sentence_wordcount = v_sentence_lenght THEN
  77. SET v_sentence_end := 1 ;
  78. END IF;
  79.  
  80. IF v_sentence_start = 1 THEN
  81. SET v_random_word := CONCAT(UPPER(SUBSTRING(v_random_word, 1, 1))
  82. ,LOWER(SUBSTRING(v_random_word FROM 2)));
  83. SET v_sentence_start := 0 ;
  84. END IF;
  85.  
  86. IF v_sentence_end = 1 THEN
  87. IF v_iter <> v_max_words THEN
  88. SET v_random_word := CONCAT(v_random_word, '.');
  89. END IF;
  90. SET v_sentence_lenght := FLOOR(9 + (RAND() * 7));
  91. SET v_sentence_end := 0 ;
  92. SET v_sentence_start := 1 ;
  93. SET v_sentence_wordcount := 0 ;
  94. END IF;
  95.  
  96. SET v_result := CONCAT(v_result,' ', v_random_word);
  97. SET v_iter := v_iter + 1;
  98. END WHILE;
  99.  
  100. RETURN TRIM(CONCAT(v_result,'.'));
  101. END;
  102. //
  103. DELIMITER ;
  104.  
  105. SET SQL_MODE=@OLD_SQL_MODE;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement