Search Postgresql Archives

apply text mask

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I need to apply arbitrary masking to a string (think displaying a phone number).

I searched around but didnt find anything and wondered if there was such a thing.

I had some perl code that already did it, so it was easy to make it into a stored proc. I'll paste it below.

use it like:
select applyMask('(000) 000-0000', '1235551313');

returns:
(123) 555-1313

So this email is two fold.

1) is there something already built in that does this?
2) if not, here's one in plperl you can use if you like.


-- zero is the replace character, everything else is copied literally
create or replace function applyMask(text, text) returns text as $$
	my($mask, $src) = @_;

	my $srcAt = 0;
	my $srcLen = length($src);
	my $result = '';

	for my $i (0..length($mask)-1)
	{
		my $mchar = substr($mask, $i, 1);
		if ($mchar eq '0')
		{
			if ($srcAt >= $srcLen)
			{
				$result .= ' ';
			} else {
				$result .= substr($src, $srcAt, 1);
				$srcAt++;
			}
		} else {
			$result .= $mchar;
		}
	}
	return $result;
$$ language plperl;


-Andy

--
Sent via pgsql-general mailing list (pgsql-general@xxxxxxxxxxxxxx)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux