Igor Korot <ikorot01@gmail.com> writes:
> But it works incorrectly - it should return:
> 9.5.7 on x86_64-redhat-linux-gnu, compiled by gcc (GCC) 6.3.1 20161221
> (Red Hat 6.3.1-1), 64-bit
> i.e. without the word "PosgreSQL", since '\s' should match the (first)
> space in the version().
position() is not a regex operation, it's just a plain substring match.
regression=# SELECT position( '\s' in version() ) ;
position
----------
0
(1 row)
You hardly need any flexibility for this anyway, so I'd just do
regression=# SELECT position( ' ' in version() ) ;
position
----------
11
(1 row)
Although possibly what you really want is split_part().
regression=# select split_part(version(), ' ', 2);
split_part
------------
9.5.7
(1 row)
regards, tom lane