ROLLBACK; BEGIN; CREATE TEMP TABLE my_fist_temp_table -- ON COMMIT DROP -- AS SELECT 1 AS id, CAST ('- ' AS TEXT) AS val; ------------ : ------------------ -- , . ALTER TABLE my_fist_temp_table ADD COLUMN is_deleted BOOLEAN NOT NULL DEFAULT FALSE; -- , , , CREATE UNIQUE INDEX ON my_fist_temp_table (lower(val)) WHERE is_deleted = FALSE; -- /, -- ( ) VAL, -- UPDATE my_fist_temp_table SET id=id+3; -- / SELECT * FROM my_fist_temp_table; --COMMIT;
SELECT CAST ('365' AS INT);
SELECT '365'::INT;
Short syntax | Description | Analog (I) LIKE |
---|---|---|
~ 'text' or ~~ '% text%' | Checks if the expression is case sensitive | LIKE '% text%' |
~ * 'text' ~~ * '% text%' | Checks if the expression is case-insensitive. | ILIKE '% text%' |
! ~ 'text' ! ~~ '% text%' | Checks case inconsistency | NOT LIKE '% text%' |
! ~ * 'text' ! ~~ * '% text%' | Checks case-insensitive expression | NOT ILIKE '% text%' |
WITH cte_table_name AS ( -- SELECT schemaname, tablename -- FROM pg_catalog.pg_tables -- , ORDER BY 1,2 ) SELECT * FROM cte_table_name; -- --
WITH table_1 (col,b) AS (SELECT 1,1), -- table_2 (col,c) AS (SELECT 2,2) -- --,table_3 (cool,yah) AS (SELECT 2,2 from table_2) -- , SELECT * FROM table_1 FULL JOIN table_2 USING (col);
WITH super_with (col,b,c) AS ( /* */ WITH table_1 (col,b) AS (SELECT 1,1), table_2 (col,c) AS (SELECT 2,2) SELECT * FROM table_1 FULL JOIN table_2 USING (col)-- ) SELECT col, b*20, c*30 FROM super_with;
-- WITH my_table (ID, year, any_val) AS ( VALUES (1, 2017,56) ,(2, 2017,67) ,(3, 2017,12) ,(4, 2017,30) ,(5, 2020,8) ,(6, 2030,17) ,(7, 2030,50) ) SELECT year ,array_agg(any_val) -- ( ) ,array_agg(any_val ORDER BY any_val) AS sort_array_agg -- ( 9+ Postgres) ,array_to_string(array_agg(any_val),';') -- ,ARRAY['This', 'is', 'my' , 'array'] AS my_simple_array -- FROM my_table GROUP BY year; --
-- 1 -- tst_unnest_for_del, SELECT INTO -- , , . -- , production - , DROP TABLE IF EXISTS tst_unnest_for_del; /* IF EXISTS , */ WITH my_table (ID, year, any_val) AS ( VALUES (1, 2017,56) ,(2, 2017,67) ,(3, 2017,12) ,(4, 2017,30) ,(5, 2020,8) ,(6, 2030,17) ,(7, 2030,50) ) SELECT year ,array_agg(id) AS arr_id -- (id) ,array_agg(any_val) AS arr_any_val -- (any_val) INTO tst_unnest_for_del -- !! FROM my_table GROUP BY year; --2 Unnest SELECT unnest(arr_id) unnest_id -- id ,year ,unnest(arr_any_val) unnest_any_val -- any_val FROM tst_unnest_for_del ORDER BY 1 -- id,
--1 DROP TABLE IF EXISTS for_del_tmp; /* IF EXISTS , */ CREATE TABLE for_del_tmp -- AS -- SELECT generate_series(1,1000) AS id, -- 1000 random() AS values; -- --2 DELETE FROM for_del_tmp WHERE id > 500 RETURNING *; /* , RETURNING * - test, SELECT (. RETURNING id,name)*/
--1 DROP TABLE IF EXISTS for_del_tmp; /* IF EXISTS , */ CREATE TABLE for_del_tmp -- AS -- SELECT generate_series(1,1000) AS id, -- 1000 ((random()*1000)::INTEGER)::text as values; /* . PS Postgre 9.2 Random() , 1000, , INTEGER , , .. , TEXT*/ --2 DELETE FROM for_del_tmp WHERE id > 500 RETURNING *; -- , --3 WITH deleted_id (id) AS ( DELETE FROM for_del_tmp WHERE id > 25 RETURNING id -- , id CTE "deleted_id" ) INSERT INTO for_del_tmp -- INSERT SELECT id, ' ' || now()::TIME || ' , ' || timeofday()::TIMESTAMP /* , ( , , )*/ FROM deleted_id -- "for_del_tmp" RETURNING *; -- -- , . --4 SELECT * FROM for_del_tmp; -- ,
COPY ( SELECT * FROM pg_stat_activity /* . : */ --) TO 'C:/TEMP/my_proc_tst.csv' -- . Windows ) TO '/tmp/my_proc_tst.csv' -- . LINUX --) TO STDOUT -- pgAdmin WITH CSV HEADER -- .
SELECT * FROM dblink( 'host=localhost user=postgres dbname=postgres', /* host user , */ 'SELECT '' : '' || current_database()' /* . , , ( ). */ ) RETURNS (col_name TEXT) UNION ALL SELECT ' : ' || current_database();
"ERROR: function dblink (unknown, unknown) does not exist"You must install the extension with the following command:
CREATE EXTENSION dblink;
WITH company (id,c_name) AS ( VALUES (1, ' ') UNION ALL /* PS UNION ALL , UNION, .. , */ VALUES (2, ' ""') UNION ALL VALUES (3, ' ') UNION ALL VALUES (4, ' ""') UNION ALL VALUES (5, ' ') UNION ALL VALUES (6, ' ') UNION ALL VALUES (7, ' ') UNION ALL VALUES (8, 'ZAO ') UNION ALL VALUES (9, ' ?') UNION ALL VALUES (10, ' 33') UNION ALL VALUES (11, ' ""') UNION ALL VALUES (12, ' " "') UNION ALL VALUES (13, ' " "') ) SELECT *, similarity(c_name, ' ""') ,dense_rank() OVER (ORDER BY similarity(c_name, ' ""') DESC) AS " " -- , FROM company WHERE similarity(c_name, ' ""') >0.25 -- 0 1, 1, ORDER BY similarity DESC;
"ERROR: function similarity (unknown, unknown) does not exist"You must install the extension with the following command:
CREATE EXTENSION pg_trgm;
WITH company (id,c_name) AS ( -- VALUES (1, ' ') ,(2, ' ""') ,(3, ' ') ,(4, ' ""') ,(5, ' ') ,(6, ' ') ,(7, ' ') ,(8, 'ZAO ') ,(9, ' ?') ,(10, ' 33') ,(11, ' ""') ,(12, ' " "') ,(14, ' " "') ,(13, ' ') ), compare (id, need) AS -- (VALUES (100500, ' ""') ,(9999, ' " "') ) SELECT c1.id, c1.c_name, ' ' || c2.need, similarity(c1.c_name, c2.need) ,dense_rank() OVER (PARTITION BY c2.need ORDER BY similarity(c1.c_name, c2.need) DESC) AS " " -- , FROM company c1 CROSS JOIN compare c2 WHERE similarity(c_name, c2.need) >0.25 -- 0 1, 1, ORDER BY similarity DESC;
-- CREATE TEMP TABLE users_tst (id, u_name) AS (VALUES (1::INT, NULL::VARCHAR(50)) ,(2, ' .') ,(3, ' .') ,(4, ' .') ,(5, ' .') ,(6, ' .') ,(7, ' .') ,(8, ' .') ,(9, ' .') );
SELECT * FROM users_tst WHERE u_name LIKE '%' OR u_name LIKE '%%' OR u_name LIKE ' .' OR u_name LIKE '%' -- ..
SELECT * FROM users_tst WHERE u_name LIKE ANY (ARRAY['%', '%%', ' .', '%'])
SELECT id ,param ,CASE WHEN param = 0 THEN NULL ELSE param END -- CASE ,NULLIF(param,0) -- NULLIF ,val FROM( VALUES( 1, 0, ' 0' ) ) AS tst (id,param,val);
SELECT COALESCE(NULL,NULL,-20,1,NULL,-7); -- -20
SELECT GREATEST(2,1,NULL,5,7,4,-9); -- 7
SELECT LEAST(2,1,NULL,5,7,4,-9); -- -9
SELECT pg_typeof(id), pg_typeof(arr), pg_typeof(NULL) FROM (VALUES ('1'::SMALLINT, array[1,2,'3',3.5])) AS x(id,arr); -- smallint, numeric[] unknown
SELECT pid, query, * FROM pg_stat_activity -- . postgres PID PROCPID WHERE state <> 'idle' and pid <> pg_backend_pid(); -- SELECT pg_terminate_backend(PID); /* PID , , , */ SELECT pg_cancel_backend(PID); /* PID . , - KILL -9 LINUX */
SELECT pg_cancel_backend(pid) FROM pg_stat_activity -- WHERE state <> 'idle' and pid <> pg_backend_pid();
SELECT ' ', 365, 567.6, 567,6
SELECT 1, ' '' '''' ' -- '' UNION ALL SELECT 2, E' \' \'\' ' -- , , E , \
select $$ '' ', E'\' $$
select $uniq_tAg$ '' ', E'\', $$ $any_text$ $uniq_tAg$
Source: https://habr.com/ru/post/340460/
All Articles