Je veux une requête (dans MySQL) pour obtenir des enregistrements avec le même caractère 3 fois: pour n'importe quel caractère, non seulement "A" et "B". P> < p> La phrase suivante ne fonctionne pas: p>
3 Réponses :
Je sais que ce n'est pas ce que vous cherchiez, mais je m'amusais de toute façon. Polonaisez mes compétences de construction de la fonction.
drop function if exists char_repeats;
DELIMITER //
CREATE FUNCTION char_repeats(string varchar(255), repeat_count int)
RETURNS int DETERMINISTIC
BEGIN
DECLARE pos int;
DECLARE len int;
DECLARE last_char CHAR(1);
DECLARE cnt int;
DECLARE ch CHAR(1);
SET pos = 0;
SET cnt = 1;
SET last_char='\0';
SET len = length(string);
REPEAT
SET ch = substring(string, pos, 1);
IF last_char = ch THEN
SET cnt = cnt + 1;
ELSE
SET cnt = 1;
SET last_char = ch;
END IF;
SET pos = pos + 1;
UNTIL pos = len OR cnt = repeat_count
END REPEAT;
RETURN cnt = repeat_count;
END
//
DELIMITER ;
Peut-être que cela peut vous aider. Il renvoie des enregistrements pour 3 lettres identiques et consécutives. p> p>
En raison de la limitation des expressions régulières dans MySQL, je ne pense pas qu'il y ait un simple em> moyen de le faire entièrement dans la base de données. Peut-être qu'il serait plus facile de le faire comme une étape de post-traitement. Voici une suggestion utilisant sed code> sur la ligne de commande: mysql -BN {connection parameters and query} | sed -n '/\(.\)\1\1/p'
Question possible associée: Stackoverflow.com / Questions / 7058209 / ...
@unutbu, étant donné la réponse de même non un duplicata de cette question B>.
@Johan: J'ai testé la réponse d'Evan. Je ne crois pas que ça marche. En outre, le La documentation MySQL pour Regex ne mentionne jamais le mot " grouper"...
@unutbu, je suis confus, qu'en est-il de
pour être plus précis, a {n} correspond exactement aux instances de a. A {N,} correspond à n ou plus d'instances d'un. Un {m, n} correspond à des instances d'un, inclusif. code> cité de votre lien b>@Johan, sa capacité à se référer à des groupes avec
\ 1 code> manquant.(.) {3,} code> ne fonctionne pas car cela correspond à 3 caractères ou plus. Nous avons besoin d'eux tous pour être le même personnage. Cela nécessite le\ 1 code> qui manque à la syntaxe de MySQL Regex.@unutbu, cristal clair merci ...
Vous ne pouvez pas faire cela avec MySQL puisqu'il ne supporte pas les rafraîchissements. Et merci Cthulhu pour cela, parce que si cela l'a fait, il ouvrirait une boîte totale de vers. Imaginez que la performance une telle requête aurait sur une table assez grande.