📄 strings.out
字号:
---- STRINGS-- Test various data entry syntaxes.---- SQL92 string continuation syntax-- E021-03 character string literalsSELECT 'first line'' - next line' ' - third line' AS "Three lines to one"; Three lines to one ------------------------------------- first line - next line - third line(1 row)-- illegal string continuation syntaxSELECT 'first line'' - next line' /* this comment is not allowed here */' - third line' AS "Illegal comment within continuation";ERROR: syntax error at or near "' - third line'" at character 75LINE 3: ' - third line' ^---- test conversions between various string types-- E021-10 implicit casting among the character data types--SELECT CAST(f1 AS text) AS "text(char)" FROM CHAR_TBL; text(char) ------------ a ab abcd abcd(4 rows)SELECT CAST(f1 AS text) AS "text(varchar)" FROM VARCHAR_TBL; text(varchar) --------------- a ab abcd abcd(4 rows)SELECT CAST(name 'namefield' AS text) AS "text(name)"; text(name) ------------ namefield(1 row)-- since this is an explicit cast, it should truncate w/o error:SELECT CAST(f1 AS char(10)) AS "char(text)" FROM TEXT_TBL; char(text) ------------ doh! hi de ho n(2 rows)-- note: implicit-cast case is tested in char.sqlSELECT CAST(f1 AS char(20)) AS "char(text)" FROM TEXT_TBL; char(text) ---------------------- doh! hi de ho neighbor (2 rows)SELECT CAST(f1 AS char(10)) AS "char(varchar)" FROM VARCHAR_TBL; char(varchar) --------------- a ab abcd abcd (4 rows)SELECT CAST(name 'namefield' AS char(10)) AS "char(name)"; char(name) ------------ namefield (1 row)SELECT CAST(f1 AS varchar) AS "varchar(text)" FROM TEXT_TBL; varchar(text) ------------------- doh! hi de ho neighbor(2 rows)SELECT CAST(f1 AS varchar) AS "varchar(char)" FROM CHAR_TBL; varchar(char) --------------- a ab abcd abcd(4 rows)SELECT CAST(name 'namefield' AS varchar) AS "varchar(name)"; varchar(name) --------------- namefield(1 row)---- test SQL92 string functions-- E### and T### are feature reference numbers from SQL99---- E021-09 trim functionSELECT TRIM(BOTH FROM ' bunch o blanks ') = 'bunch o blanks' AS "bunch o blanks"; bunch o blanks ---------------- t(1 row)SELECT TRIM(LEADING FROM ' bunch o blanks ') = 'bunch o blanks ' AS "bunch o blanks "; bunch o blanks ------------------ t(1 row)SELECT TRIM(TRAILING FROM ' bunch o blanks ') = ' bunch o blanks' AS " bunch o blanks"; bunch o blanks ------------------ t(1 row)SELECT TRIM(BOTH 'x' FROM 'xxxxxsome Xsxxxxx') = 'some Xs' AS "some Xs"; some Xs --------- t(1 row)-- E021-06 substring expressionSELECT SUBSTRING('1234567890' FROM 3) = '34567890' AS "34567890"; 34567890 ---------- t(1 row)SELECT SUBSTRING('1234567890' FROM 4 FOR 3) = '456' AS "456"; 456 ----- t(1 row)-- T581 regular expression substring (with SQL99's bizarre regexp syntax)SELECT SUBSTRING('abcdefg' FROM 'a#"(b_d)#"%' FOR '#') AS "bcd"; bcd ----- bcd(1 row)-- No match should return NULLSELECT SUBSTRING('abcdefg' FROM '#"(b_d)#"%' FOR '#') IS NULL AS "True"; True ------ t(1 row)-- Null inputs should return NULLSELECT SUBSTRING('abcdefg' FROM '(b|c)' FOR NULL) IS NULL AS "True"; True ------ t(1 row)SELECT SUBSTRING(NULL FROM '(b|c)' FOR '#') IS NULL AS "True"; True ------ t(1 row)SELECT SUBSTRING('abcdefg' FROM NULL FOR '#') IS NULL AS "True"; True ------ t(1 row)-- PostgreSQL extension to allow omitting the escape character;-- here the regexp is taken as Posix syntaxSELECT SUBSTRING('abcdefg' FROM 'c.e') AS "cde"; cde ----- cde(1 row)-- With a parenthesized subexpression, return only what matches the subexprSELECT SUBSTRING('abcdefg' FROM 'b(.*)f') AS "cde"; cde ----- cde(1 row)-- PostgreSQL extension to allow using back reference in replace string;SELECT regexp_replace('1112223333', '(\\d{3})(\\d{3})(\\d{4})', '(\\1) \\2-\\3'); regexp_replace ---------------- (111) 222-3333(1 row)SELECT regexp_replace('AAA BBB CCC ', '\\s+', ' ', 'g'); regexp_replace ---------------- AAA BBB CCC (1 row)SELECT regexp_replace('AAA', '^|$', 'Z', 'g'); regexp_replace ---------------- ZAAAZ(1 row)SELECT regexp_replace('AAA aaa', 'A+', 'Z', 'gi'); regexp_replace ---------------- Z Z(1 row)-- invalid option of REGEXP_REPLACESELECT regexp_replace('AAA aaa', 'A+', 'Z', 'z');ERROR: invalid option of regexp_replace: z-- E021-11 position expressionSELECT POSITION('4' IN '1234567890') = '4' AS "4"; 4 --- t(1 row)SELECT POSITION(5 IN '1234567890') = '5' AS "5"; 5 --- t(1 row)-- T312 character overlay functionSELECT OVERLAY('abcdef' PLACING '45' FROM 4) AS "abc45f"; abc45f -------- abc45f(1 row)SELECT OVERLAY('yabadoo' PLACING 'daba' FROM 5) AS "yabadaba"; yabadaba ---------- yabadaba(1 row)SELECT OVERLAY('yabadoo' PLACING 'daba' FROM 5 FOR 0) AS "yabadabadoo"; yabadabadoo ------------- yabadabadoo(1 row)SELECT OVERLAY('babosa' PLACING 'ubb' FROM 2 FOR 4) AS "bubba"; bubba ------- bubba(1 row)---- test LIKE-- Be sure to form every test as a LIKE/NOT LIKE pair.---- simplest examples-- E061-04 like predicateSELECT 'hawkeye' LIKE 'h%' AS "true"; true ------ t(1 row)SELECT 'hawkeye' NOT LIKE 'h%' AS "false"; false ------- f(1 row)SELECT 'hawkeye' LIKE 'H%' AS "false"; false ------- f(1 row)SELECT 'hawkeye' NOT LIKE 'H%' AS "true"; true ------ t(1 row)SELECT 'hawkeye' LIKE 'indio%' AS "false"; false ------- f(1 row)SELECT 'hawkeye' NOT LIKE 'indio%' AS "true"; true ------ t(1 row)SELECT 'hawkeye' LIKE 'h%eye' AS "true"; true ------ t(1 row)SELECT 'hawkeye' NOT LIKE 'h%eye' AS "false"; false ------- f(1 row)SELECT 'indio' LIKE '_ndio' AS "true"; true ------ t(1 row)SELECT 'indio' NOT LIKE '_ndio' AS "false"; false ------- f(1 row)SELECT 'indio' LIKE 'in__o' AS "true"; true ------ t(1 row)SELECT 'indio' NOT LIKE 'in__o' AS "false"; false ------- f(1 row)SELECT 'indio' LIKE 'in_o' AS "false"; false ------- f(1 row)SELECT 'indio' NOT LIKE 'in_o' AS "true"; true ------ t(1 row)-- unused escape characterSELECT 'hawkeye' LIKE 'h%' ESCAPE '#' AS "true"; true ------ t(1 row)SELECT 'hawkeye' NOT LIKE 'h%' ESCAPE '#' AS "false"; false ------- f(1 row)SELECT 'indio' LIKE 'ind_o' ESCAPE '$' AS "true"; true ------ t(1 row)SELECT 'indio' NOT LIKE 'ind_o' ESCAPE '$' AS "false"; false ------- f(1 row)-- escape character-- E061-05 like predicate with escape clauseSELECT 'h%' LIKE 'h#%' ESCAPE '#' AS "true"; true ------ t(1 row)SELECT 'h%' NOT LIKE 'h#%' ESCAPE '#' AS "false"; false ------- f(1 row)SELECT 'h%wkeye' LIKE 'h#%' ESCAPE '#' AS "false"; false ------- f(1 row)SELECT 'h%wkeye' NOT LIKE 'h#%' ESCAPE '#' AS "true"; true ------ t(1 row)SELECT 'h%wkeye' LIKE 'h#%%' ESCAPE '#' AS "true"; true ------ t(1 row)SELECT 'h%wkeye' NOT LIKE 'h#%%' ESCAPE '#' AS "false"; false ------- f(1 row)SELECT 'h%awkeye' LIKE 'h#%a%k%e' ESCAPE '#' AS "true"; true ------ t(1 row)SELECT 'h%awkeye' NOT LIKE 'h#%a%k%e' ESCAPE '#' AS "false"; false ------- f(1 row)SELECT 'indio' LIKE '_ndio' ESCAPE '$' AS "true"; true ------ t(1 row)SELECT 'indio' NOT LIKE '_ndio' ESCAPE '$' AS "false"; false ------- f(1 row)SELECT 'i_dio' LIKE 'i$_d_o' ESCAPE '$' AS "true"; true ------ t(1 row)SELECT 'i_dio' NOT LIKE 'i$_d_o' ESCAPE '$' AS "false"; false ------- f(1 row)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -