apply text mask

Поиск
Список
Период
Сортировка
От Andy Colson
Тема apply text mask
Дата
Msg-id 4B217BA5.1020904@squeakycode.net
обсуждение исходный текст
Ответы Re: apply text mask  (Andy Colson <andy@squeakycode.net>)
Список pgsql-general
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

В списке pgsql-general по дате отправления:

Предыдущее
От: Glen Barber
Дата:
Сообщение: Restore time differences between full database dumps and separate schema/data dumps
Следующее
От: "J. Greg Davidson"
Дата:
Сообщение: Seeking expected return type info for SPI function