條件和排序

brj880719發表於2017-09-21

一、符號補充

用於where比較條件的有: 

1、等於: =、<、<=、>、>=、<> 

2、包含: in、not in、 exists、not exists 

3、範圍: between……and、not between……and 

4、匹配測試: like、not like 

5、Null測試: is null、is not null 

6、布林連結: and、or、not

萬用字元:
在where子句中,萬用字元可與like條件一起運用。在Oracle中: 

1、%(百分號):  用來表示任意數量的字元,或者可能根本沒有字元。 

2、_(下劃線):  表示確切的未知字元。 

3、?(問號):  用來表示確切的未知字元。 

4、#(井號):  用來表示確切的阿拉伯數字,0到9. 

5、[a-d](方括號): 用來表示字元範圍,在這裡是從a到d.

二、模糊查詢

我們可以在where子句中使用like關鍵字來達到Oracle模糊查詢的效果;

在Where子句中,可以對datetime、char、varchar欄位型別的列用Like關鍵字配合萬用字元來實現模糊查詢

三、變數

如果不使用替換變數,每次操作我都都要修改指令碼。非常不便,如果使用替換變數,我們可以將帶變數的語句存放在sql指令碼中,每次執行時,只需要輸入替換變數的值就可以了。

1、&:&引用的替換變數只在當前SQL有效

2、&&:&&引用的替換變數則在當前會話有效

3、SET VERIFY:如果要顯示SQL*Plus使用替換值替換後的指令碼檔案,可以使用SET VERIFY ON/OFF 命令

4、SET DEFINE:在儲存過程或包體裡面,經常有在字串中使用&的情況,執行指令碼時,經常會將這些字串視為替換變數,要求輸入值,這樣煩不甚煩,其實只需要設定一下SQL*PLUS的環境變數即可避免這種情況。通常通過SET DEFINE OFF

5、DEFINE

  a) 使用DEFINE定義了的變數,可以使用&引用宣告的變數。其作用範圍或生命週期通常是整個會話。

  b) 如果定義了變數後,需要清除變數,則可以使用UNDEFINE清除變數

  c) 使用DEFINE VARIABLE來檢視變數

四、where 語句整理

  1. --數字比較(<):工資小於6000
  2. select last_name ,salary
  3. from employees
  4. where salary < 6000 ;

  5. --字串比較(=):員工 名字,查詢King 的工資
  6. select last_name ,salary
  7. from employees
  8. where last_name='King' ;

  9. --時間比較(=)
  10. --僱傭日期是 1998.07.01 的員工 名字, 工資
  11. --確定時間格式
  12. select sysdate from dual;
  13. 22-oct-11
  14. --查詢名字和工資
  15. select last_name , salary
  16. from employees
  17. where hire_date = '01-jul-98' ;

  18. --時間(between .. and ..):1998 年 2 月 入職的員工 名字和工資
  19. select last_name , salary
  20. from employees
  21. where hire_date between '01-2月-98' and '28-2月-98' ;

  22. --10----60 號部門員工
  23. --between .. and ..:
  24. select last_name , salary
  25.   from employees
  26.  where department_id between 10 and 60 ;
  27. --比較運算子:
  28. select last_name , salary
  29.   from employees
  30.  where department_id >= 10
  31.    and department_id <= 60;
  32.    
  33. --in:10 , 30, 70 號部門員工
  34. select last_name , salary
  35. from employees
  36. where department_id in ( 10,30,70 ) ;

  37. --模糊查詢(_單個字元):
  38. --模糊查詢(%多個字元,長度不固定)
  39. --last_name 中 第三個字元是 s
  40. select last_name , salary
  41. from employees
  42. where last_name like '__s%' ;

  43. --last_name 中 倒數第三個字元是 s
  44. select last_name , salary
  45. from employees
  46. where last_name like '%s__' ;

  47. --1998 年入職的員工 名字和工資
  48. --方法一:比較查詢
  49. select last_name , salary
  50.   from employees
  51.  where hire_date between '01-1月-98' and '31-12月-98' ;
  52. --方法二:萬用字元方式
  53. select last_name , salary
  54. from employees
  55. where hire_date like '%98';

  56. --2 月 入職的員工 名字和工資
  57. select last_name , hire_date
  58. from employees
  59. where hire_date like '%-2月%';

  60. --轉譯符,轉譯_
  61. select * from t1
  62. where a like 's_%' ;

  63. select * from t1
  64. where a like 's\_%' escape '\\';

  65. --轉譯*
  66. select * from t1
  67. where a like 's*_%' escape '*';

  68. --null值處理:哪些員工 沒有部門號
  69. select last_name , salary
  70. from employees
  71. where department_id is null ;

  72. --哪些員工 有部門號
  73. --方法一
  74. select last_name , salary
  75. from employees
  76. where department_id > 0 ;
  77. --方法二
  78. select last_name , salary
  79. from employees
  80. where department_id is not null
  81. order by 2 ;

  82. --and:
  83. --名字 S 開頭,並且工資高於 8000 的員工
  84. select last_name , salary
  85. from employees
  86. where last_name like 'S%' and salary > 8000 ;

  87. --排序order by
  88. select last_name , hire_date
  89. from employees
  90. order by 2 ;

  91. --verify:使用VERIFY 命令來顯示的替代變數之前和之後SQL開發人員替換替換變數的值
  92. --&:用來提示使用者輸入一個數值:
  93. set verify on
  94. select last_name from employees
  95. where employee_id=&1;

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24851054/viewspace-2145260/,如需轉載,請註明出處,否則將追究法律責任。

相關文章