Conversion d'une chaine avec une lettre en entier
Fermé
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
-
11 oct. 2013 à 10:21
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 - 11 oct. 2013 à 13:48
ThEBiShOp Messages postés 8378 Date d'inscription jeudi 22 mars 2007 Statut Contributeur Dernière intervention 8 février 2021 - 11 oct. 2013 à 13:48
A voir également:
- Conversion d'une chaine avec une lettre en entier
- Cacher une conversation whatsapp - Guide
- Application pour écrire les chiffre en lettre - Télécharger - Outils professionnels
- Chaine tnt gratuite sur mobile - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Recuperer une conversation whatsapp supprimée - Guide
5 réponses
Utilisateur anonyme
11 oct. 2013 à 12:05
11 oct. 2013 à 12:05
Je ne connais rien du tout aux procédures stockées, mais j'aurais été tenté d'écrire à la place de ta ribambelle de IF ELSEIF :
SELECT ASCII(carac)-ASCII('@') INTO num
Utilisateur anonyme
11 oct. 2013 à 10:26
11 oct. 2013 à 10:26
Bonjour
Le format est-il toujours 5 chiffres - une lettre - 4 chiffres ou plus varié que ça ?
Veux-tu le faire uniquement en SQL ou as-tu la possibilité de traiter la donnée extraite avec un autre langage (au hasard : PHP) ?
Le format est-il toujours 5 chiffres - une lettre - 4 chiffres ou plus varié que ça ?
Veux-tu le faire uniquement en SQL ou as-tu la possibilité de traiter la donnée extraite avec un autre langage (au hasard : PHP) ?
Salut,
Peut être en mélangeant avec substring() et char()?
Aïe ça fait mal à la tête vu les peu de tests conditionnels possible...
J'imagine que vous ne pouvez pas utiliser une fonction php pour remplacer l'enregistrement?
Peut être en mélangeant avec substring() et char()?
Aïe ça fait mal à la tête vu les peu de tests conditionnels possible...
J'imagine que vous ne pouvez pas utiliser une fonction php pour remplacer l'enregistrement?
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 565
11 oct. 2013 à 11:00
11 oct. 2013 à 11:00
L'idée c'est de mettre en place un trigger.
J'importe des données en bloc via un LOAD XML local INFILE INTO TABLE
Donc pas de traitement ligne à ligne, c'est pour ça que le trigger est plus adapté (de mon point de vue).
Le format est normalement fixe jusqu'à la lettre, j'ai commencé à faire un substring suivi d'un if else if pour vérifier toutes les lettres de l'alphabet, mais c'est un peu pachydermique comme méthode !!
J'importe des données en bloc via un LOAD XML local INFILE INTO TABLE
Donc pas de traitement ligne à ligne, c'est pour ça que le trigger est plus adapté (de mon point de vue).
Le format est normalement fixe jusqu'à la lettre, j'ai commencé à faire un substring suivi d'un if else if pour vérifier toutes les lettres de l'alphabet, mais c'est un peu pachydermique comme méthode !!
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
ThEBiShOp
Messages postés
8378
Date d'inscription
jeudi 22 mars 2007
Statut
Contributeur
Dernière intervention
8 février 2021
1 565
11 oct. 2013 à 11:55
11 oct. 2013 à 11:55
Du coup je me suis fait une procédure stockée qui donne ça :
Si quelqu'un a moins bourrin, je prends, faute de mieux, je vais garder ça ^^
DELIMITER $$
CREATE DEFINER='root'@'%' PROCEDURE 'createClePersonne'(IN str VARCHAR(20))
BEGIN
DECLARE carac CHAR(10);
DECLARE num TINYINT(1);
SELECT SUBSTRING(str, 8, 1) INTO carac;
IF carac = 'A' THEN
SELECT 1 INTO num;
ELSEIF carac = 'B' THEN
SELECT 2 INTO num;
ELSEIF carac = 'C' THEN
SELECT 3 INTO num;
ELSEIF carac = 'D' THEN
SELECT 4 INTO num;
ELSEIF carac = 'E' THEN
SELECT 5 INTO num;
ELSEIF carac = 'F' THEN
SELECT 6 INTO num;
ELSEIF carac = 'G' THEN
SELECT 7 INTO num;
ELSEIF carac = 'H' THEN
SELECT 8 INTO num;
ELSEIF carac = 'I' THEN
SELECT 9 INTO num;
ELSEIF carac = 'J' THEN
SELECT 10 INTO num;
ELSEIF carac = 'K' THEN
SELECT 11 INTO num;
ELSEIF carac = 'L' THEN
SELECT 12 INTO num;
ELSEIF carac = 'M' THEN
SELECT 13 INTO num;
ELSEIF carac = 'N' THEN
SELECT 14 INTO num;
ELSEIF carac = 'O' THEN
SELECT 15 INTO num;
ELSEIF carac = 'P' THEN
SELECT 16 INTO num;
ELSEIF carac = 'Q' THEN
SELECT 17 INTO num;
ELSEIF carac = 'R' THEN
SELECT 18 INTO num;
ELSEIF carac = 'S' THEN
SELECT 19 INTO num;
ELSEIF carac = 'T' THEN
SELECT 20 INTO num;
ELSEIF carac = 'U' THEN
SELECT 21 INTO num;
ELSEIF carac = 'V' THEN
SELECT 22 INTO num;
ELSEIF carac = 'W' THEN
SELECT 23 INTO num;
ELSEIF carac = 'X' THEN
SELECT 24 INTO num;
ELSEIF carac = 'Y' THEN
SELECT 25 INTO num;
ELSEIF carac = 'Z' THEN
SELECT 26 INTO num;
END IF;
SELECT CONCAT(SUBSTRING(str, 1, 7), num, SUBSTRING(str, 9));
END
Si quelqu'un a moins bourrin, je prends, faute de mieux, je vais garder ça ^^
11 oct. 2013 à 12:07
Modifié par le père. le 11/10/2013 à 13:38
C'est rare de te voir du côté "demandeur"
11 oct. 2013 à 13:48
Merci en tout cas ;)