條件和排序

2021-09-22 13:22:11 字數 3589 閱讀 9090

用於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的行數,單獨列出來,我...