當前位置:首頁 » 編程語言 » sql操作符排序
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql操作符排序

發布時間: 2023-02-02 01:08:03

sql按1月2月3月Q1 4月5月6月Q2...排序問題

加個order by case
when 年季月='Jan''13' then 1
when 年季月='Feb''13' then 2
when 年季月='Mar''13' then 3
when 年季月='Q1''13' then 4
when 年季月='Apr''13' then 5
when 年季月='May''13' then 6
when 年季月='Jun''13' then 7
when 年季月='Q2''13' then 8
when 年季月='Jul''13' then 9
when 年季月='Aug''13' then 10
when 年季月='Sep''13' then 11
when 年季月='Q3''13' then 12
when 年季月='Otc''13' then 13
when 年季月='Nov''13' then 14
when 年季月='Dec''13' then 15
when 年季月='Q4''13' then 16
else 17
end
如果很多地方需要按這個次序排序,那就建個表,存放次序與年季月的對應數據

資料庫中常用的sql語句有哪些

1.檢索數據
SELECT prod_nameFROM Procts;
#檢索單列

SELECT prod_id, prod_name, prod_priceFROMProcts;
#檢索多列

SELECT * FROM Procts;
#檢索所有列

SELECT DISTINCTvend_id FROMProcts;
#檢索不同的值

SELECTprod_name FROM Procts LIMIT 5;
#返回不超過5行數據

SELECTprod_name FROM Procts LIMIT 5 OFFSET 5;
#返回從第5行起的5行數據。LIMIT指定返回的行數,LIMIT帶的OFFSET指定從哪兒開始。
2.排序檢索數據
SELECTprod_name
FROMProcts
ORDER BYprod_name;
#排序數據

SELECT prod_id, prod_price, prod_name
FROMProcts
ORDER BY prod_price, prod_name;
#按多個列排序

SELECT prod_id, prod_price, prod_name
FROMProcts
ORDER BY 2, 3;
#按列位置排序,第三行表示先按prod_price, 再按prod_name進行排序

SELECT prod_id, prod_price, prod_name
FROMProcts
ORDER BY prod_priceDESC, prod_name;
#prod_price列以降序排序,而prod_name列(在每個價格內)仍然按標準的升序排序

3.過濾數據
SELECT prod_name, prod_price
FROMProcts
WHERE prod_price< 10;
#檢查單個值

SELECT prod_name, prod_price
FROMProcts
WHERE vend_id <> 『DLL01』;
#不匹配檢查

SELECT prod_name, prod_price
FROMProcts
WHERE prod_priceBETWEEN 5 AND 10;
#范圍值檢查

SELECT cust_name
FROMCUSTOMERS
WHERE cust_emailIS NULL;
#空值檢查

4.高級數據過濾
SELECTprod_id, prod_price, prod_name
FROMProcts
WHERE vend_id = 『DLL01』ANDprod_price <= 4;
#AND操作符

SELECTprod_name, prod_price
FROMProcts
WHEREvend_id=』DLL01』 OR vend_id=』BRS01』;
#OR操作符

SELECTprod_name, prod_price
FROMProcts
WHERE (vend_id = 』DLL01』ORvend_id=』BRS01』)
ANDprod_price >= 10;
#求值順序 AND的優先順序高於OR

SELECTprod_name, prod_price
FROMProcts
WHERE vend_idIN (『DLL01』,』BRS01』)
ORDER BY prod_name;
#IN操作符

SELECT prod_name
FROMProcts
WHERE NOTvend_id = 『DLL01』
ORDER BY prod_name;
#NOT 操作符

SELECT prod_name
FROMProcts
WHEREvend_id <> 『DLL01』
ORDER BY prod_name;
#NOT 操作符

③ sql語句的and和or怎麼確定執行的先後順序

sql語句的and和or運算符屬於相同優先順序,按結合性進行從左到右結合。

在一個表達式中可能包含多個有不同運算符連接起來的、具有不同數據類型的數據對象;由於表達式有多種運算,不同的結合順序可能得出不同結果甚至出現錯誤運算錯誤,因為當表達式中含多種運算時,必須按一定順序進行結合,才能保證運算的合理性和結果的正確性、唯一性。

優先順序從高到低依次遞減,最上面具有最高的優先順序,逗號操作符具有最低的優先順序。表達式的結合次序取決於表達式中各種運算符的優先順序。優先順序高的運算符先結合,優先順序低的運算符後結合,同一優先順序的運算符按結合性進行從左到右結合。

(3)sql操作符排序擴展閱讀:

每種同類型的運算符都有內部的運算符優先順序,不同類型的運算符之間也有相應的優先順序順序。一個表達式中既可以包括相同類型的運算符,也可以包括不同類型的運算符或者函數。當多種運算符出現在同一個表達式中時,應該先按照不同類型運算符間的優先順序進行運算。

各種運算符間的優先順序如下:數值運算符、字元串運算符、關系運算符、邏輯運算符。可以用括弧改變優先順序順序,使得括弧內的運算優先於括弧外的運算。對於多重括弧,總是由內到外強製表達式的某些部分優先運行。括弧內的運算總是最優先計算。

④ 以下哪一類操作符在sql語句中的優先順序最高

大概就是下面這個樣子的

sql樣例:
select *columns* from *tables*
where *predicae1*
group by *columns*
having *predicae1*
order by *columns*
limit *start*, *offset*;

執行順序:
1、from *tables*
2、where *predicae1*
3、group by *columns*
4、having *predicae1*
5、select *columns*
6、order by *columns*
7、limit *start*, *offset*

⑤ SQL裡面的排序語句desc和ASC有什麼區別

SQL 語句中, asc是指定列按升序排列,desc則是指定列按降序排列。

排序子句語法:order by 列名 asc/desc

例表格:tt

select*fromttorderbyn1asc,n2desc;

⑥ 資料庫操作select語句使用and和or操作符計算次序問題

例句:select 列名 from 表名 where 條件1 or 條件2 and 條件3

SQL在處理or操作符之前,優先處理and操作符,如此例中,會優先查找滿足條件2和條件3的數據,然後再查找出滿足條件1的.若要解決這個問題,可以使用圓括弧明確的分組相應的操作符.

如:select 列名 from 表名 where ( 條件1 or 條件2 ) and 條件3

注意:在使用具有AND和OR操作符的where子句中都應使用圓括弧明確的分組操作符,不要過分依賴默認計算次序,即使它確實是你想要的東西也是如此.使用圓括弧沒有什麼壞處,它能消除歧義.

⑦ SQL必知必會(第五版)

去重 :使用DISTINCT關鍵字,它必須直接放在列名的前面。

檢索前5行數據:

LIMIT 5 OFFSET 5指示MySQL等DBMS返回從第5行起的5行數據。第一個數字是檢索的行數,第二個數字是指從哪兒開始。

2.1 排序數據

注意: ORDER BY 子句的位置在指定一條ORDER BY子句時,應該保證它是 SELECT語句中最後一條子句 。如果它不是最後的子句,將會出錯。

ORDER BY 2, 3表示先按prod_price,再按prod_name進行排序。
好處在於不用重新輸入列名。
缺點。首先,不明確給出列名有可能造成錯用列名排序。其次,在對SELECT清單進行更改時容易錯誤地對數據進行排序(忘記對ORDER BY子句做相應的改動)。最後,如果進行排序的列不在SELECT清單中,顯然不能使用這項技術。

DESC 是DESCENDING的縮寫,這兩個關鍵字都可以使用。與DESC相對的是 ASC (或ASCENDING),在升序(A→Z)排序時可以指定它。但實際上,ASC沒有多大用處,因為升序是默認的(如果既不指定ASC也不指定DESC,則假定為ASC)。

DESC關鍵字只應用到直接位於其前面的列名。如果想在多個列上進行降序排序,必須對每一列指定DESC關鍵字。

在SELECT語句中,數據根據WHERE子句中指定的搜索條件進行過濾。WHERE子句在表名(FROM子句)之後給出。

在同時使用ORDER BY和WHERE子句時,應該讓ORDER BY位於WHERE之後,否則將會產生錯誤。

提示: 單引號用來限定字元串。如果將值與字元串類型的列進行比較,就需要限定引號。用來與數值列進行比較的值不用引號。

操作符(operator) 用來聯結或改變WHERE子句中的子句的關鍵字,也稱為邏輯操作符(logicaloperator)。

AND 用在WHERE子句中的關鍵字,用來指示檢索滿足所有給定條件的行。
一個AND子句,只有兩個過濾條件。可以增加多個過濾條件,每個條件間都要使用AND關鍵字。
ORDER BY子句,放在WHERE子句之後。

OR: WHERE子句中使用的關鍵字,用來表示檢索匹配任一給定條件的行。

SQL(像多數語言一樣)在處理OR操作符前,優先處理AND操作符。

圓括弧具有比AND或OR操作符更高的優先順序。
任何時候使用具有AND和OR操作符的WHERE子句,都應該使用圓括弧明確地分組操作符。

IN:WHERE子句中用來指定要匹配值的清單的關鍵字,功能與OR相當。
IN操作符一般比一組OR操作符執行得更快。
IN的最大優點是可以包含其他SELECT語句,能夠更動態地建立WHERE子句。

NOT: WHERE子句中用來否定其後條件的關鍵字。

通配符(wildcard) 用來匹配值的一部分的特殊字元。
搜索模式(search pattern) 由字面值、通配符或兩者組合構成的搜索條件。

說明:區分大小寫根據DBMS的不同及其配置,搜索可以是區分大小寫的。如果區分大小寫,則』fish%』與Fish bean bag toy就不匹配。

除了能匹配一個或多個字元外,%還能匹配0個字元。%代表搜索模式中給定位置的0個、1個或多個字元。
'%』不會匹配名稱為NULL的行。

下劃線的用途與%一樣,但它只匹配單個字元,而不是多個字元。

與%能匹配多個字元不同,_總是剛好匹配一個字元,不能多也不能少。

此語句的WHERE子句中的模式為』[JM]%'。這一搜索模式使用了兩個不同的通配符。[JM]匹配方括弧中任意一個字元,它也只能匹配單個字元。因此,任何多於一個字元的名字都不匹配。[JM]之後的%通配符匹配第一個字元之後的任意數目的字元,返回所需結果。

也可以使用NOT操作符得出類似的結果。^的唯一優點是在使用多個WHERE子句時可以簡化語法:

例如:

拼接(concatenate)
將值聯結到一起(將一個值附加到另一個值)構成單個值。
操作符可用加號(+)或兩個豎杠(||)表示。
說明:是+還是||?SQL Server使用+號。DB2、Oracle、PostgreSQL和SQLite使用||。在MySQL和MariaDB中,必須使用特殊的函數。

說明: TRIM函數 大多數DBMS都支持 RTRIM() (去掉字元串右邊的空格)、 LTRIM() (去掉字元串左邊的空格)以及 TRIM() (去掉字元串左右兩邊的空格)。

SQL支持列別名。 別名(alias) 是一個欄位或值的替換名。別名用 AS 關鍵字賦予。

AS關鍵字可選,最好用它。

提示:如何測試計算
SELECT語句為測試、檢驗函數和計算提供了很好的方法。雖然SELECT通常用於從表中檢索數據,但是省略了FROM子句後就是簡單地訪問和處理表達式,例如SELECT 3*2;將返回6,SELECT Trim(' abc ');將返回abc,SELECT Curdate();使用Curdate()函數返回當前日期和時間。

UPPER()函數: 將文本轉換為大寫。

SQL函數不區分大小寫,因此upper(), UPPER(), Upper()都可以,substr(), SUBSTR(), SubStr()也都行。

⑧ sql server中運算符的優先等級從高到低的排列是怎樣的

大到小依次是 算數運算符、邏輯運算符、比較運算符、賦值運算符。