Обсуждение: ARRAY[] with \'s is broken?
Can anyone explain what's going on with the slashes?
ssdb=# select version(); version
---------------------------------------------------------------------------PostgreSQL 8.0.1 on sparc-sun-solaris2.9,
compiledby GCC gcc (GCC)
3.4.2
(1 row)
ssdb=# select ARRAY['\\a']; array
---------{"\\a"}
(1 row)
ssdb=# select ARRAY['\a'];array
-------{a}
(1 row)
ssdb=# select ARRAY['\\\a']; array
---------{"\\a"}
(1 row)
--
On Tue, 2005-05-17 at 13:18 -0400, Andrew Dunstan wrote:
> I don't see anything broken. V 7.4.8 shows the same:
How the heck do you store a single backslash in an text array?
> andrew=# select ARRAY['\\a'] as f1, ARRAY['\a']as f2 , ARRAY['\\\a'] as f2;
>
> f1 | f2 | f2
>
> --------+-----+---------
>
> {"\\a"} | {a} | {"\\a"}
>
> It might be mildly confusing because '\a' == 'a'
> cheers
>
> andrew
>
>
>
> Rod Taylor wrote:
>
> >Can anyone explain what's going on with the slashes?
> >
> >ssdb=# select version();
> > version
> >---------------------------------------------------------------------------
> > PostgreSQL 8.0.1 on sparc-sun-solaris2.9, compiled by GCC gcc (GCC)
> >3.4.2
> >(1 row)
> >
> >ssdb=# select ARRAY['\\a'];
> > array
> >---------
> > {"\\a"}
> >(1 row)
> >
> >ssdb=# select ARRAY['\a'];
> > array
> >-------
> > {a}
> >(1 row)
> >
> >ssdb=# select ARRAY['\\\a'];
> > array
> >---------
> > {"\\a"}
> >(1 row)
> >
> >
> >
> >
> >
> >
>
--
I don't see anything broken. V 7.4.8 shows the same:
andrew=# select ARRAY['\\a'] as f1, ARRAY['\a']as f2 , ARRAY['\\\a'] as f2;
f1 | f2 | f2
--------+-----+---------
{"\\a"} | {a} | {"\\a"}
It might be mildly confusing because '\a' == 'a'
cheers
andrew
Rod Taylor wrote:
>Can anyone explain what's going on with the slashes?
>
>ssdb=# select version();
> version
>---------------------------------------------------------------------------
> PostgreSQL 8.0.1 on sparc-sun-solaris2.9, compiled by GCC gcc (GCC)
>3.4.2
>(1 row)
>
>ssdb=# select ARRAY['\\a'];
> array
>---------
> {"\\a"}
>(1 row)
>
>ssdb=# select ARRAY['\a'];
> array
>-------
> {a}
>(1 row)
>
>ssdb=# select ARRAY['\\\a'];
> array
>---------
> {"\\a"}
>(1 row)
>
>
>
>
>
>
Rod Taylor <pg@rbt.ca> writes:
> On Tue, 2005-05-17 at 13:18 -0400, Andrew Dunstan wrote:
>> I don't see anything broken. V 7.4.8 shows the same:
> How the heck do you store a single backslash in an text array?
You just did. array_out doubles the backslashes again, though.
regression=# select ARRAY['\\a']; array
---------{"\\a"}
(1 row)
regression=# select (ARRAY['\\a'])[1];array
-------\a
(1 row)
regards, tom lane
> > How the heck do you store a single backslash in an text array?
>
> ... array_out doubles the backslashes again, though.
That explains how I got confused.
> regression=# select ARRAY['\\a'];
> array
> ---------
> {"\\a"}
> (1 row)
>
> regression=# select (ARRAY['\\a'])[1];
> array
> -------
> \a
> (1 row)
>
> regards, tom lane
>
--
Rod Taylor wrote: >On Tue, 2005-05-17 at 13:18 -0400, Andrew Dunstan wrote: > > >>I don't see anything broken. V 7.4.8 shows the same: >> >> > >How the heck do you store a single backslash in an text array? > > > Well, in v 8.0 I use dollar quoting :-) select ARRAY[$\$]; But as Tom says the text output function will double it. cheers andrew