123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311 |
- --
- -- TEXT
- --
- SELECT text 'this is a text string' = text 'this is a text string' AS true;
- true
- ------
- t
- (1 row)
- SELECT text 'this is a text string' = text 'this is a text strin' AS false;
- false
- -------
- f
- (1 row)
- CREATE TABLE TEXT_TBL (f1 text);
- INSERT INTO TEXT_TBL VALUES ('doh!');
- INSERT INTO TEXT_TBL VALUES ('hi de ho neighbor');
- SELECT * FROM TEXT_TBL;
- f1
- -------------------
- doh!
- hi de ho neighbor
- (2 rows)
- /*
- * various string functions
- */
- select concat('one');
- concat
- --------
- one
- (1 row)
- select concat_ws('#','one');
- concat_ws
- -----------
- one
- (1 row)
- select concat_ws(',',10,20,null,30);
- concat_ws
- -----------
- 10,20,30
- (1 row)
- select concat_ws('',10,20,null,30);
- concat_ws
- -----------
- 102030
- (1 row)
- select concat_ws(NULL,10,20,null,30) is null;
- ?column?
- ----------
- t
- (1 row)
- select reverse('abcde');
- reverse
- ---------
- edcba
- (1 row)
- select i, left('ahoj', i), right('ahoj', i) from generate_series(-5, 5) t(i) order by i;
- i | left | right
- ----+------+-------
- -5 | |
- -4 | |
- -3 | a | j
- -2 | ah | oj
- -1 | aho | hoj
- 0 | |
- 1 | a | j
- 2 | ah | oj
- 3 | aho | hoj
- 4 | ahoj | ahoj
- 5 | ahoj | ahoj
- (11 rows)
- select quote_literal('');
- quote_literal
- ---------------
- ''
- (1 row)
- select quote_literal('abc''');
- quote_literal
- ---------------
- 'abc'''
- (1 row)
- select quote_literal(e'\\');
- quote_literal
- ---------------
- E'\\'
- (1 row)
- /*
- * format
- */
- select format(NULL);
- format
- --------
-
- (1 row)
- select format('Hello');
- format
- --------
- Hello
- (1 row)
- select format('Hello %s', 'World');
- format
- -------------
- Hello World
- (1 row)
- select format('Hello %%');
- format
- ---------
- Hello %
- (1 row)
- select format('Hello %%%%');
- format
- ----------
- Hello %%
- (1 row)
- -- should fail
- select format('Hello %s %s', 'World');
- ERROR: too few arguments for format()
- select format('Hello %s');
- ERROR: too few arguments for format()
- select format('Hello %x', 20);
- ERROR: unrecognized format() type specifier "x"
- HINT: For a single "%" use "%%".
- -- check literal and sql identifiers
- select format('INSERT INTO %I VALUES(%L,%L)', 'mytab', 10, 'Hello');
- format
- ----------------------------------------
- INSERT INTO mytab VALUES('10','Hello')
- (1 row)
- select format('%s%s%s','Hello', NULL,'World');
- format
- ------------
- HelloWorld
- (1 row)
- select format('INSERT INTO %I VALUES(%L,%L)', 'mytab', 10, NULL);
- format
- -------------------------------------
- INSERT INTO mytab VALUES('10',NULL)
- (1 row)
- select format('INSERT INTO %I VALUES(%L,%L)', 'mytab', NULL, 'Hello');
- format
- ----------------------------------------
- INSERT INTO mytab VALUES(NULL,'Hello')
- (1 row)
- -- should fail, sql identifier cannot be NULL
- select format('INSERT INTO %I VALUES(%L,%L)', NULL, 10, 'Hello');
- ERROR: null values cannot be formatted as an SQL identifier
- -- check positional placeholders
- select format('%1$s %3$s', 1, 2, 3);
- format
- --------
- 1 3
- (1 row)
- select format('%1$s %12$s', 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
- format
- --------
- 1 12
- (1 row)
- -- should fail
- select format('%1$s %4$s', 1, 2, 3);
- ERROR: too few arguments for format()
- select format('%1$s %13$s', 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12);
- ERROR: too few arguments for format()
- select format('%0$s', 'Hello');
- ERROR: format specifies argument 0, but arguments are numbered from 1
- select format('%*0$s', 'Hello');
- ERROR: format specifies argument 0, but arguments are numbered from 1
- select format('%1$', 1);
- ERROR: unterminated format() type specifier
- HINT: For a single "%" use "%%".
- select format('%1$1', 1);
- ERROR: unterminated format() type specifier
- HINT: For a single "%" use "%%".
- -- check mix of positional and ordered placeholders
- select format('Hello %s %1$s %s', 'World', 'Hello again');
- format
- -------------------------------
- Hello World World Hello again
- (1 row)
- select format('Hello %s %s, %2$s %2$s', 'World', 'Hello again');
- format
- --------------------------------------------------
- Hello World Hello again, Hello again Hello again
- (1 row)
- -- check field widths and left, right alignment
- select format('>>%10s<<', 'Hello');
- format
- ----------------
- >> Hello<<
- (1 row)
- select format('>>%10s<<', NULL);
- format
- ----------------
- >> <<
- (1 row)
- select format('>>%10s<<', '');
- format
- ----------------
- >> <<
- (1 row)
- select format('>>%-10s<<', '');
- format
- ----------------
- >> <<
- (1 row)
- select format('>>%-10s<<', 'Hello');
- format
- ----------------
- >>Hello <<
- (1 row)
- select format('>>%-10s<<', NULL);
- format
- ----------------
- >> <<
- (1 row)
- select format('>>%1$10s<<', 'Hello');
- format
- ----------------
- >> Hello<<
- (1 row)
- select format('>>%1$-10I<<', 'Hello');
- format
- ----------------
- >>"Hello" <<
- (1 row)
- select format('>>%2$*1$L<<', 10, 'Hello');
- format
- ----------------
- >> 'Hello'<<
- (1 row)
- select format('>>%2$*1$L<<', 10, NULL);
- format
- ----------------
- >> NULL<<
- (1 row)
- select format('>>%2$*1$L<<', -10, NULL);
- format
- ----------------
- >>NULL <<
- (1 row)
- select format('>>%*s<<', 10, 'Hello');
- format
- ----------------
- >> Hello<<
- (1 row)
- select format('>>%*1$s<<', 10, 'Hello');
- format
- ----------------
- >> Hello<<
- (1 row)
- select format('>>%-s<<', 'Hello');
- format
- -----------
- >>Hello<<
- (1 row)
- select format('>>%10L<<', NULL);
- format
- ----------------
- >> NULL<<
- (1 row)
- select format('>>%2$*1$L<<', NULL, 'Hello');
- format
- -------------
- >>'Hello'<<
- (1 row)
- select format('>>%2$*1$L<<', 0, 'Hello');
- format
- -------------
- >>'Hello'<<
- (1 row)
|