Extrait du numéro de chaîne avec la fonction d'Oracle
J'ai besoin de créer une DB Oracle fonction qui prend une chaîne de caractères comme paramètre. La chaîne contient des lettres et des chiffres. J'ai besoin d'extraire tous les chiffres de cette chaîne. Par exemple, si j'ai une chaîne comme RO1234, j'ai besoin d'être en mesure d'utiliser une fonction, disons extract_number('RO1234')
, et le résultat serait 1234.
Pour être encore plus précis, c'est le genre de requête SQL qui cette fonction devrait être utilisée.
SELECT DISTINCT column_name, extract_number(column_name)
FROM table_name
WHERE extract_number(column_name) = 1234;
QUESTION: Comment puis-je ajouter une fonction telle que, pour ma base de données Oracle, afin d'être en mesure de l'utiliser comme dans l'exemple ci-dessus, à l'aide de l'un de Oracle SQL Developer ou SQLTools applications client?
regex_replace
, SELECT REGEXP_REPLACE(column_name,'[[:alpha:]]') from tbl
, au moins vous effectuez une recherche dans Google, voir ce(community.oracle.com/thread/598281) oracle communauté fournit quelques moyens utilesJe pourrais utiliser un bon exemple. Je ne suis pas bon avec Oracle
"J'ai besoin d'extraire tous les chiffres de cette chaîne" - ce qui arrivera si la chaîne d'entrée contient plusieurs numéros? E. g. que doit votre de retour de la fonction pour l'entrée '1234abc5678' ?
compte tenu de la forme des valeurs stockées sur cette colonne, il n'est pas nécessaire de considérer cette possibilité.
Votre exemple de requête semble avoir des erreurs, c'est à dire des guillemets simples autour de
table_name
(et, éventuellement, également à tort autour de column_name
). Aussi, pourquoi voudriez-vous avoir l'extrait numéro dans la colonne d'une liste, quand vous savez déjà exactement ce qu'elle est, comme vous l'avez spécifié dans le WHERE
état?OriginalL'auteur Vali S | 2015-09-30
Vous devez vous connecter pour publier un commentaire.
Que vous souhaitez utiliser
REGEXP_REPLACE
afin d'éliminer tous les non-chiffres en caractères d'une chaîne:ou
Bien sûr, vous pouvez écrire une fonction
extract_number
. Il semble un peu comme overkill si, pour écrire une fonction qui se compose d'un seul appel de fonction elle-même.REGEXP_REPLACE
est la fonction que vous appelez pour extraire les chiffres.Cependant, j'ai ajouté la fonction, vous pouvez écrire à l'appel
regexp_replace
pour vous.Yup, Overkill est mon autre nom. Je vous remercie.
Mes requêtes concaténer rien; ils se contentent de supprimer non chiffres. Si vous avez une autre question que celle posée ici, pourquoi ne pas poser la question dans une nouvelle demande? (Même si je suis sûr que votre question a été posée souvent déjà, donc vous devriez être capable de trouver une réponse sans avoir à les écrire vous-même une demande.)
OriginalL'auteur Thorsten Kettner
Vous pouvez utiliser expressions régulières pour extraire le numéro de chaîne. Permet de le vérifier. Supposons que c'est la chaîne mélange de texte et de nombres stack12345overflow569'. Celui-ci devrait fonctionner:
qui sera de retour "12345569".
aussi, vous pouvez utiliser celui-ci:
qui sera de retour "12345569" pour les chiffres et "StackOverFlow" pour les personnages.
OriginalL'auteur Parasram Pawar
Si vous êtes à la recherche pour le 1er Numéro de décimales que la chaîne est correcte décimales, vous pouvez essayer
regexp_substr
fonction comme ceci:OriginalL'auteur Iqbal Singh