Re: why do i get 2 as answer for select length('aa '::char(6));

From: "David G(dot) Johnston" <david(dot)g(dot)johnston(at)gmail(dot)com>
To: john snow <ofbizfanster(at)gmail(dot)com>
Cc: "pgsql-novice(at)postgresql(dot)org" <pgsql-novice(at)postgresql(dot)org>
Subject: Re: why do i get 2 as answer for select length('aa '::char(6));
Date: 2018-01-17 02:52:23
Message-ID: CAKFQuwa0SRr0aSySgmU3McM_=L5M=5NKXmdorGKM9Es3TAEvNQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-novice

On Tuesday, January 16, 2018, john snow <ofbizfanster(at)gmail(dot)com> wrote:

> as well as select length('aa'::char(6));
>
> i thought if the string to be stored is shorter than specified length , it
> will be padded with spaces?
>
> i'm using version 10.0 on windows 10
>

The docs could use more detail here but in short the sentence:

However, trailing spaces are treated as semantically insignificant and
disregarded when comparing two values of type character.

In turn results in the length test only counting semantically significant
spaces and thus returning two regardless of the number of input spaces
originally present. postgreSQL pads the spaces but then basically pretends
they don't exist except for printing.

I'm not sure why it even bothers to store the spaces given that...but I
suppose it's more efficient than looking up the typmod all of the time.

David J.

In response to

Responses

Browse pgsql-novice by date

  From Date Subject
Next Message john snow 2018-01-17 03:03:24 Re: why do i get 2 as answer for select length('aa '::char(6));
Previous Message john snow 2018-01-17 02:40:50 Re: why do i get 2 as answer for select length('aa '::char(6));