Quantcast
Channel: SCN : All Content - All Communities
Viewing all articles
Browse latest Browse all 3276

Extracting a Numeric Value from a Text Field

$
0
0

Hi there,

 

Today I saw a interfesting question posted on BOBJ [Webi 4.x] Find a character in the string.

The OP questioned on how one can get the numeric value (characters from 0 to 9) that lies inside a text field .

For instance , the value of the field [Address Field] is "Houston77047TX" and "Zipcode" variable should report "77047" .

 

So, how to accomplish it ?

 

I came  up with one solution that consists on :

1 - Replace all numeric characters with another character, for instance "?" , so the previous [Address Filed] will become [Replaced] = "Houston?????TX"

2 - Find the position of the first ocurrence of "?" inside [Replaced]

3 - Find the position of the last ocurrence of "?" inside [Replaced]

4 - Extract [Number] from [Address Field] given the [Start] and [End] position of [Number] (given in steps 1 and 2.

 

 

To accomplish that, I create 4 variables,

[Replaced] =Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace(Replace([var];"0";"?");"1";"?");"2";"?");"3";"?");"4";"?");"5";"?");"6";"?");"7";"?");"8";"?");"9";"?")

 

[Start] = Pos([Replaced;"?")

 

[End] =If(Substr([Replaced];[Start]+1;1)="?";If(Substr([Replaced];[Start]+2;1)="?";If(Substr([Replaced];[Start]+3;1)="?";If(Substr([Replaced];[Start]+4;1)="?";If(Substr([Replaced];[Start]+5;1)="?";If(Substr([Replaced];[Start]+6;1)="?";If(Substr([Replaced];[Start]+7;1)="?";If(Substr([Replaced];[Start]+8;1)="?";If(Substr([Replaced];[Start]+9;1)="?";[Start]+9;[Start]+9);[Start]+8);[Start]+7);[Start]+6);[Start]+5);[Start]+4);[Start]+3);[Start]+2);[Start]+1)-1

 

For [End], I assumed that the maximum size of the number would be 9 characters long (from 0 to 999999999)  but the size is expandable, you can set the maximum number to whatever you want.

 

And, finally

[Number] = =Substr([Address Field];[Start];[End]- [Start]+1).

 

The idea behind these variables is the following :

 

[Replaced] : Search [Address Field] and recursevely change the characters from 0 to 9 with ?

[End] Trhough the [Start] position of "?" inside [Replaced], I test the [Start] +1 searching for "?", if it´s found, I search at [Start] + 2 and so on, until [Start]+9. If "?" is not found at [Start]+n, returns [Start]+n.

 

I will post the wid sample of it later.

 

Regards,

Rogerio


Viewing all articles
Browse latest Browse all 3276

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>