{"id":197,"date":"2014-06-23T08:13:16","date_gmt":"2014-06-23T08:13:16","guid":{"rendered":"http:\/\/artigianodelsoftware.wordpress.com\/?p=197"},"modified":"2014-06-23T08:13:16","modified_gmt":"2014-06-23T08:13:16","slug":"esiste-una-funzione-isnumeric-in-plsql","status":"publish","type":"post","link":"https:\/\/artigianodelsoftware.it\/blog\/2014\/06\/23\/esiste-una-funzione-isnumeric-in-plsql\/","title":{"rendered":"Esiste una funzione isNumeric in PLSQL??"},"content":{"rendered":"<div class=\"pdfprnt-buttons pdfprnt-buttons-post pdfprnt-top-right\"><a href=\"javascript: imageToPdf()\" class=\"pdfprnt-button pdfprnt-button-pdf\" target=\"_self\"><img src=\"https:\/\/artigianodelsoftware.it\/blog\/wp-content\/plugins\/pdf-print\/images\/pdf.png\" alt=\"image_pdf\" title=\"Visualizza PDF\" \/><\/a><a href=\"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/posts\/197?print=print\" class=\"pdfprnt-button pdfprnt-button-print\" target=\"_blank\"><\/a><\/div><p>Potrebbe sorgere la necessit\u00e0 di dover leggere dei valori solo numerici, memorizzati su di un campo alfanumerico. I motivi per cui si pu\u00f2 avere questa necessit\u00e0 possono essere svariati.<\/p>\n<p>Al momento in cui scrivo, una funzione <em><strong>isNumeric<\/strong> <\/em>o similare non esiste in PLSQL. Come possiamo realizzare questo? Ci viene in aiuto il sito di <a href=\"https:\/\/asktom.oracle.com\/pls\/asktom\/f?p=100:11:0::::P11_QUESTION_ID:1794145000346577404\" target=\"_blank\">AskTom<\/a>, che ci fornisce alcuni spunti.<\/p>\n<p>&nbsp;<\/p>\n<p>Abbiamo due strade:<\/p>\n<p>&nbsp;<\/p>\n<blockquote>\n<h2>Funzione Translate&#8230;.<\/h2>\n<\/blockquote>\n<p>La funzione Translate pu\u00f2 risultare molto utile. Come indicato in questa <a href=\"http:\/\/www.techonthenet.com\/oracle\/functions\/translate.php\" target=\"_blank\">pagina<\/a>, la funzione esegue una sostituzione di caratteri basandosi su delle corrispondenze. Di conseguenza, un sistema per ottenere il risultato desiderato, si pu\u00f2 usare la seguente istruzione:<\/p>\n<p style=\"text-align:center;\"><em><strong>replace( translate( &lt;valore&gt;, &#8216;0123456789&#8217;, &#8216;0000000000&#8217; ), &#8216;0&#8217;, &#8221; )<\/strong><\/em><\/p>\n<p style=\"text-align:left;\">Spieghiamo il funzionamento: La translate, fondamentalmente, esegue una sostituzione delle cifre numeriche con &#8216;0&#8217; (zero). La seconda funzione replace, banalmente, elimina lo &#8216;0&#8217; (zero).<\/p>\n<p style=\"text-align:left;\">Conseguenza? Se<em><strong> &lt;valore&gt;<\/strong><\/em> contiene delle cifre numeriche, queste sono eliminate e viene restituita una stringa vuota. In alternativa, se su <em><strong>&lt;valore&gt;<\/strong><\/em> \u00e8 presente un carattere alfanumerico, questo rimane e viene restituito nella stringa.<\/p>\n<p style=\"text-align:left;\">.<\/p>\n<blockquote>\n<h2 style=\"text-align:left;\">REGEX &#8211; Espressioni Regolari<\/h2>\n<\/blockquote>\n<p>E&#8217; possibile anche utilizzare le <a href=\"http:\/\/docs.oracle.com\/cd\/B12037_01\/server.101\/b10759\/conditions018.htm\" target=\"_blank\">espressioni regolari<\/a>, per riuscire ad identificare i valori solo numerici. Se la versione di Oracle \u00e8 la 10g o successive, la funzione <em><strong>REGEXP_LIKE<\/strong><\/em> pu\u00f2 essere utilizzata. Di seguito un esempio:<\/p>\n<p>&nbsp;<\/p>\n<p style=\"text-align:center;\"><em><strong>SELECT col1\u00a0FROM t1\u00a0WHERE REGEXP_LIKE(col1, &#8216;[[:digit:]]&#8217;);<\/strong><\/em><\/p>\n<p style=\"text-align:left;\">Basta semplicemente impostare le regole, ed il gioco \u00e8 fatto.<\/p>\n<blockquote>\n<h2 style=\"text-align:left;\">Conclusioni<\/h2>\n<\/blockquote>\n<p>Si tratta di due soluzioni pi\u00f9 che valide, ma la prima risulta essere molto semplice, veloce, pratica ed usabile in vari contesti. La seconda risulta pi\u00f9 pesante.<\/p>\n<div class=\"clearfix\"><span class='ldc-ul_cont' onclick=\"alter_ul_post_values(this,'197','like')\" >Likes<img src=\"https:\/\/artigianodelsoftware.it\/blog\/wp-content\/plugins\/like-dislike-counter-for-posts-pages-and-comments\/images\/up.png\" \/>(<span>1<\/span>)<\/span><span class='ldc-ul_cont' onclick=\"alter_ul_post_values(this,'197','dislike')\" >Dislikes<img src=\"https:\/\/artigianodelsoftware.it\/blog\/wp-content\/plugins\/like-dislike-counter-for-posts-pages-and-comments\/images\/down.png\" \/>(<span>1<\/span>)<\/span><\/div>","protected":false},"excerpt":{"rendered":"<p>Potrebbe sorgere la necessit\u00e0 di dover leggere dei valori solo numerici, memorizzati su di un campo alfanumerico. I motivi per cui si pu\u00f2 avere questa necessit\u00e0 possono essere svariati. Al momento in cui scrivo, una funzione isNumeric o similare non<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_editorskit_title_hidden":false,"_editorskit_reading_time":0,"_editorskit_is_block_options_detached":false,"_editorskit_block_options_position":"{}","footnotes":""},"categories":[19,20,21],"tags":[],"_links":{"self":[{"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/posts\/197"}],"collection":[{"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/comments?post=197"}],"version-history":[{"count":0,"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/posts\/197\/revisions"}],"wp:attachment":[{"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/media?parent=197"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/categories?post=197"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/artigianodelsoftware.it\/blog\/wp-json\/wp\/v2\/tags?post=197"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}