J'ai une table comme suit: J'essaie d'obtenir les valeurs numériques de la table. La sortie attendue est p> pour colonne1: j'essaie d'obtenir des données à l'aide de: pour colonne2: J'essaie comme suit: toutes suggestions s'il vous plaît? p> p> regexp_replace (colonne1, '[^ 0-9]', '') comme colonne1_numérique ; code>
Mais cela ne fonctionne pas pour la deuxième rangée et renvoie 2700 p>
Regexp_replace (regexp_extract (colonne2, '\\ ((((((((((. *) \\\)') , '[^ 0-9]', '') comme colonne2_numérique code>
Mais cela ne fonctionne pas non plus pour la deuxième rangée et renvoie des valeurs nulles p>
3 Réponses :
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
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: strong>
Sélectionnez Regexp_replace (sous-chaînée (la 2e valeur est 200 GB ', - 6),' [^ 0-9] '', '') P>
Extraire la dernière valeur numérique de la chaîne il extrait p> au lieu de '(\\ d +) ([^ 0-9] *) $' code>:
[^ 0-9] code> (pas un chiffre) Vous pouvez utiliser
\\ d code>, ce qui est Un peu plus court: p>
Ça a marché! Si nous avons un enregistrement comme besoin (facultatif) pour redémarrer (10 fois) pour les 3 jours suivants code> 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 code> -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)