J'ai besoin de diviser la chaîne délimitée par des virgules en une deuxième colonne J'ai le tableau suivant:
CL1 POS POS2 LENGHT ALLELE
1 3015108,3015109 5 A
2 3015110,3015200 10 B
3 3015200,3015300 15 C
4 3015450,3015500 20 D
5 3015600,3015700 15 E
Je veux diviser les nombres après la virgule en une deuxième colonne POS2 Donc ça devrait être comme ça
CL1 POS POS2 LENGHT ALLELE
1 3015108 3015109 5 A
2 3015110 3015200 10 B
3 3015200 3015300 15 C
4 3015450 3015500 20 D
5 3015600 3015700 15 E
J'ai donc demandé ce qui suit:
INSERT INTO MyTable (POS2)
SELECT RIGHT(POS, CHARINDEX(',', POS) + 1 ) FROM MyTable ;
It returns an error :
ERROR 1305 (42000): FUNCTION test.CHARINDEX does not exist
MySQL n'a pas de fonction CHARINDEX()
intégrée. LOCATE()
serait l'équivalent de MySQL.
Utiliser SUBSTRING_INDEX()
pourrait être une façon plus succincte de le faire. Quelque chose comme ça (avertissement: non testé):
SUBSTRING_INDEX(POS, ',', 1)
pour POS
SUBSTRING_INDEX(POS, ',', -1)
pour POS2
En passant, je peux mal comprendre ce que vous essayez d'accomplir, mais il semble que vous souhaitiez peut-être UPDATE
les lignes existantes, pas INSERT
les nouvelles? Quelque chose comme:
UPDATE MyTable SET POS2 = SUBSTRING_INDEX(POS, ',', -1);
UPDATE MyTable SET POS = SUBSTRING_INDEX(POS, ',', 1);
MySQL
a une fonction similaire: InStr
ou pour la même syntaxe Locate.