⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 case.sql

📁 PostgreSQL 8.1.4的源码 适用于Linux下的开源数据库系统
💻 SQL
字号:
---- CASE-- Test the case statement--CREATE TABLE CASE_TBL (  i integer,  f double precision);CREATE TABLE CASE2_TBL (  i integer,  j integer);INSERT INTO CASE_TBL VALUES (1, 10.1);INSERT INTO CASE_TBL VALUES (2, 20.2);INSERT INTO CASE_TBL VALUES (3, -30.3);INSERT INTO CASE_TBL VALUES (4, NULL);INSERT INTO CASE2_TBL VALUES (1, -1);INSERT INTO CASE2_TBL VALUES (2, -2);INSERT INTO CASE2_TBL VALUES (3, -3);INSERT INTO CASE2_TBL VALUES (2, -4);INSERT INTO CASE2_TBL VALUES (1, NULL);INSERT INTO CASE2_TBL VALUES (NULL, -6);---- Simplest examples without tables--SELECT '3' AS "One",  CASE    WHEN 1 < 2 THEN 3  END AS "Simple WHEN";SELECT '<NULL>' AS "One",  CASE    WHEN 1 > 2 THEN 3  END AS "Simple default";SELECT '3' AS "One",  CASE    WHEN 1 < 2 THEN 3    ELSE 4  END AS "Simple ELSE";SELECT '4' AS "One",  CASE    WHEN 1 > 2 THEN 3    ELSE 4  END AS "ELSE default";SELECT '6' AS "One",  CASE    WHEN 1 > 2 THEN 3    WHEN 4 < 5 THEN 6    ELSE 7  END AS "Two WHEN with default";-- Constant-expression folding shouldn't evaluate unreachable subexpressionsSELECT CASE WHEN 1=0 THEN 1/0 WHEN 1=1 THEN 1 ELSE 2/0 END;SELECT CASE 1 WHEN 0 THEN 1/0 WHEN 1 THEN 1 ELSE 2/0 END;-- However we do not currently suppress folding of potentially-- reachable subexpressionsSELECT CASE WHEN i > 100 THEN 1/0 ELSE 0 END FROM case_tbl;-- Test for cases involving untyped literals in test expressionSELECT CASE 'a' WHEN 'a' THEN 1 ELSE 2 END;---- Examples of targets involving tables--SELECT '' AS "Five",  CASE    WHEN i >= 3 THEN i  END AS ">= 3 or Null"  FROM CASE_TBL;SELECT '' AS "Five",  CASE WHEN i >= 3 THEN (i + i)       ELSE i  END AS "Simplest Math"  FROM CASE_TBL;SELECT '' AS "Five", i AS "Value",  CASE WHEN (i < 0) THEN 'small'       WHEN (i = 0) THEN 'zero'       WHEN (i = 1) THEN 'one'       WHEN (i = 2) THEN 'two'       ELSE 'big'  END AS "Category"  FROM CASE_TBL;SELECT '' AS "Five",  CASE WHEN ((i < 0) or (i < 0)) THEN 'small'       WHEN ((i = 0) or (i = 0)) THEN 'zero'       WHEN ((i = 1) or (i = 1)) THEN 'one'       WHEN ((i = 2) or (i = 2)) THEN 'two'       ELSE 'big'  END AS "Category"  FROM CASE_TBL;---- Examples of qualifications involving tables------ NULLIF() and COALESCE()-- Shorthand forms for typical CASE constructs--  defined in the SQL92 standard.--SELECT * FROM CASE_TBL WHERE COALESCE(f,i) = 4;SELECT * FROM CASE_TBL WHERE NULLIF(f,i) = 2;SELECT COALESCE(a.f, b.i, b.j)  FROM CASE_TBL a, CASE2_TBL b;SELECT *  FROM CASE_TBL a, CASE2_TBL b  WHERE COALESCE(a.f, b.i, b.j) = 2;SELECT '' AS Five, NULLIF(a.i,b.i) AS "NULLIF(a.i,b.i)",  NULLIF(b.i, 4) AS "NULLIF(b.i,4)"  FROM CASE_TBL a, CASE2_TBL b;SELECT '' AS "Two", *  FROM CASE_TBL a, CASE2_TBL b  WHERE COALESCE(f,b.i) = 2;---- Examples of updates involving tables--UPDATE CASE_TBL  SET i = CASE WHEN i >= 3 THEN (- i)                ELSE (2 * i) END;SELECT * FROM CASE_TBL;UPDATE CASE_TBL  SET i = CASE WHEN i >= 2 THEN (2 * i)                ELSE (3 * i) END;SELECT * FROM CASE_TBL;UPDATE CASE_TBL  SET i = CASE WHEN b.i >= 2 THEN (2 * j)                ELSE (3 * j) END  FROM CASE2_TBL b  WHERE j = -CASE_TBL.i;SELECT * FROM CASE_TBL;---- Clean up--DROP TABLE CASE_TBL;DROP TABLE CASE2_TBL;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -