用於where比較條件的有:
等於: =、<、<=、>、>=、<>
包含: in、not in、 exists、not exists
範圍: between……and、not between……and
匹配測試: like、not like
null測試: is null、is not null
萬用字元:
在where子句中,萬用字元可與like條件一起運用。在oracle中:
%(百分號): 用來表示任意數量的字元,或者可能根本沒有字元。
_(下劃線): 表示確切的未知字元。
?(問號): 用來表示確切的未知字元。
#(井號): 用來表示確切的阿拉伯數字,0到9.
[a-d](方括號): 用來表示字元範圍,在這裡是從a到d.
我們可以在where子句中使用like關鍵字來達到oracle模糊查詢的效果;
在where子句中,可以對datetime、char、varchar欄位型別的列用like關鍵字配合萬用字元來實現模糊查詢
如果不使用替換變數,每次操作我都都要修改指令碼。非常不便,如果使用替換變數,我們可以將帶變數的語句存放在sql指令碼中,每次執行時,只需要輸入替換變數的值就可以了。
&:&引用的替換變數只在當前sql有效
&&:&&引用的替換變數則在當前會話有效
set define:在儲存過程或包體裡面,經常有在字串中使用&的情況,執行指令碼時,經常會將這些字串視為替換變數,要求輸入值,這樣煩不甚煩,其實只需要設定一下sql*plus的環境變數即可避免這種情況。通常通過set define off
define
--數字比較(<):工資小於6000
select last_name ,salary
from employees
where salary < 6000 ;
--字串比較(=):員工 名字,查詢king 的工資
select last_name ,salary
from employees
where last_name='king' ;
--時間比較(=)
--僱傭日期是 1998.07.01 的員工 名字, 工資
--確定時間格式
select sysdate from dual;
22-oct-11
--查詢名字和工資
select last_name , salary
from employees
where hire_date = '01-jul-98' ;
--時間(between .. and ..):1998 年 2 月 入職的員工 名字和工資
select last_name , salary
from employees
where hire_date between '01-2月-98' and '28-2月-98' ;
--10----60 號部門員工
--between .. and ..:
select last_name , salary
from employees
where department_id between 10 and 60 ;
--比較運算子:
select last_name , salary
from employees
where department_id >= 10
and department_id <= 60;
--in:10 , 30, 70 號部門員工
select last_name , salary
from employees
where department_id in ( 10,30,70 ) ;
--模糊查詢(_單個字元):
--模糊查詢(%多個字元,長度不固定)
--last_name 中 第三個字元是 s
select last_name , salary
from employees
where last_name like '__s%' ;
--last_name 中 倒數第三個字元是 s
select last_name , salary
from employees
where last_name like '%s__' ;
--1998 年入職的員工 名字和工資
--方法一:比較查詢
select last_name , salary
from employees
where hire_date between '01-1月-98' and '31-12月-98' ;
--方法二:萬用字元方式
select last_name , salary
from employees
where hire_date like '%98';
--2 月 入職的員工 名字和工資
select last_name , hire_date
from employees
where hire_date like '%-2月%';
--轉譯符,轉譯_
select * from t1
where a like 's_%' ;
select * from t1
where a like 's\_%' escape '\\';
--轉譯*
select * from t1
where a like 's*_%' escape '*';
--null值處理:哪些員工 沒有部門號
select last_name , salary
from employees
where department_id is null ;
--哪些員工 有部門號
--方法一
select last_name , salary
from employees
where department_id > 0 ;
--方法二
select last_name , salary
from employees
where department_id is not null
order by 2 ;
--and:
--名字 s 開頭,並且工資高於 8000 的員工
select last_name , salary
from employees
where last_name like 's%' and salary > 8000 ;
--排序order by
select last_name , hire_date
from employees
order by 2 ;
--verify:使用verify 命令來顯示的替代變數之前和之後sql開發人員替換替換變數的值
--&:用來提示使用者輸入乙個數值:
set verify on
select last_name from employees
where employee_id=&1;
Python dict字典排序和多條件排序
利用lambda實現排序 要實現多條件排序,只需要依次指定排序的標準,具體實現如下 counter counter list sorted counter.iteritems key lambda x x 1 reverse true 根據value的大小排序 你 3 是 1 不是 1 counte...
多條件排序
做專案有個產品需求 具體是要求根據優先順序大小排序一遍,然後根據中文名排一遍,簡單說就是二級排序了 測試資料,arraydata.sort function a,b reverse function chinesesort array var cachearr 快取陣列 var sortarr 最終...
MySQL ORDER BY IF 條件排序
源 在做sqlzoo的時候,碰到乙個sql的排序問題,他把符合條件的單獨幾行,可以放在查詢結果的開始,或者查詢結果的尾部 通過的方法就是in語句 也可以通過if語句 自己做了個測試,如下,這個是表的所有內容 使用order by配合if語句 比如我想將species為snake的行數,單獨列出來,我...