0
votes

Valeur numérique d'extrait de ruche d'une chaîne

J'ai une table comme suit: xxx

J'essaie d'obtenir les valeurs numériques de la table. La sortie attendue est xxx

pour colonne1: j'essaie d'obtenir des données à l'aide de: regexp_replace (colonne1, '[^ 0-9]', '') comme colonne1_numérique ; Mais cela ne fonctionne pas pour la deuxième rangée et renvoie 2700

pour colonne2: J'essaie comme suit: Regexp_replace (regexp_extract (colonne2, '\\ ((((((((((. *) \\\)') , '[^ 0-9]', '') comme colonne2_numérique Mais cela ne fonctionne pas non plus pour la deuxième rangée et renvoie des valeurs nulles

toutes suggestions s'il vous plaît?


0 commentaires

3 Réponses :


0
votes

Si vous utilisez la regex ci-dessous, il fonctionnera pour les colonnes et n'extrait que le numéro de la chaîne.

var numberPattern = /\d+/g;
'The first value is 200 gb'.match( numberPattern ).join('') // 200

'need to restart (2 times)'.match( numberPattern ).join('') // 2


0 commentaires

0
votes

S'il vous plaît essayez cette
Sélectionnez Regexp_replace ('La première valeur est 200 GB', '[^ 0-9]' ',' ')
J'ai eu raison de 200
Essayez ceci:
Sélectionnez Regexp_replace (sous-chaînée (la 2e valeur est 200 GB ', - 6),' [^ 0-9] '', '')


0 commentaires

1
votes

Extraire la dernière valeur numérique de la chaîne '(\\ d +) ([^ 0-9] *) $' : xxx

il extrait xxx

au lieu de [^ 0-9] (pas un chiffre) Vous pouvez utiliser \\ d , ce qui est Un peu plus court: xxx


3 commentaires

Ça a marché! Si nous avons un enregistrement comme besoin (facultatif) pour redémarrer (10 fois) pour les 3 jours suivants dans la colonne 2; Comment obtenir la valeur 10 de cela? La requête le retourne maintenant 3 pour cette situation.


Plus s'il y a une virgule dans cette valeur (par exemple: besoin (facultatif) pour redémarrer (1 000 fois) pour les 3 jours suivants -Comment pour éviter les virgules et obtenir 1000 de cela?


@Tanvir Sélectionnez Regexp_extract ('besoin (facultatif) pour redémarrer (1 000 fois) pour les 3 prochains jours', '([0-9,] +)', 1)