Les surprises de RAND() !

16 janvier 2019

Le fait que RAND() soit une fonction non-déterministe (nondeterministic) peut causer certaines surprises et certains problèmes.  Un aperçu ici!


collapseSpaces

20 novembre 2018

Besoin d’éliminer les espaces multiples pour les remplacer par un seul?  J’ai ce qu’il vous faut!

 

SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='STRICT_TRANS_TABLES';
DROP FUNCTION IF EXISTS collapseSpaces;

DELIMITER //
CREATE FUNCTION collapseSpaces ( stringparam VARBINARY(255))
RETURNS VARBINARY(255)
DETERMINISTIC
LANGUAGE SQL
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT 'Returns a string with all spaces replaced/merged by/into a single space character'

BEGIN
DECLARE newString VARBINARY(255);
DECLARE hasChanged TINYINT UNSIGNED;
DECLARE oldLength TINYINT UNSIGNED;

SET hasChanged = 1;
SET newString = stringparam;
SET oldLength = CHAR_LENGTH(stringparam);

WHILE hasChanged DO
SET newString = REPLACE(newString, ' ', ' ');
SET hasChanged = (oldLength != CHAR_LENGTH(newString));
SET oldLength = CHAR_LENGTH(newString);
END WHILE;

RETURN newString;
END
//

DELIMITER ;
SET SQL_MODE=@OLD_SQL_MODE;


occurrencesOf

20 novembre 2018

Comment trouver le nombre d’occurrences d’une chaîne de caractères dans MySQL?  J’en avais déjà parlé ici en français et aussi en anglais.

Pour se faciliter la vie, rien de mieux qu’une fonction pour faire le travail!

 

SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='STRICT_TRANS_TABLES';

DROP FUNCTION IF EXISTS occurrencesOf;

DELIMITER //
CREATE FUNCTION occurrencesOf ( sourceString VARBINARY(255), searchString VARBINARY(255))
RETURNS MEDIUMINT UNSIGNED
DETERMINISTIC
LANGUAGE SQL
CONTAINS SQL
SQL SECURITY DEFINER
COMMENT 'Returns the number of occurrences of <searchString> inside <sourceString>'

BEGIN
DECLARE occ MEDIUMINT UNSIGNED;

SELECT FLOOR(( CHAR_LENGTH(sourceString) - CHAR_LENGTH(REPLACE(sourceString, searchString, '')) ) / (CHAR_LENGTH(searchString))) INTO occ;

RETURN occ;
END
//

DELIMITER ;
SET SQL_MODE=@OLD_SQL_MODE;

P.S.  J’ai l’intention de publier plusieurs fonctions utilitaires du genre.  D’ici à ce que je m’organise sur GitHub, je publierai le code de ces procédures et/ou fonctions ici en attendant!

Mise à jour (2019-03-07)



Serpents et échelles

20 décembre 2017

Aucun enfant n’y a échappé, nous avons tous joué au jeu de Serpents et échelles (Snakes and Ladders) plus jeunes! Là où ce jeu devient intéressant pour un adulte, c’est lorsqu’il s’agit d’en étudier les aspects mathématiques!

Combien de coups sont en moyenne nécessaires pour une partie? De quoi a l’air la distribution des coups nécessaires? À quoi ressemble la fonction de répartition?  Plutôt que d’utiliser une chaîne de Markov pour trouver ces réponses, quoi de plus simple et rapide que de simuler des parties?

C’est exactement ce qu’a fait Jake VanderPlas tel que décrit dans cet article.