求一個select語句的寫法我需要這樣一個select語句,查詢
不太清楚你沒有值的意思 如果沒有值表示字段為空字符串,那么 如果用SQLSERVER select case when 字段='' then '' else '@' end as 字段 from 表 如果用ACCESS select iif(字段='','','@') as 字段 from 表 如果沒有值表示字段為NULL,那么 如果用SQLSERVER select case when 字段 is null then '' else '@' end as 字段 from 表 如果用ACCESS select iif(字段 is null ,'','@') as 字段 from 表。
sql 中的select 語句問題
加一對[]是可選字段.加{}是必選字段一.SELECT語句的完整語法為: SELECT[ALL|DISTINCT|DISTINCTROW|TOP] {*|talbe.*|[table.]field1[AS alias1][,[table.]field2[AS alias2][,…]]} FROM tableexpression[,…][IN externaldatabase] [WHERE…] [GROUP BY…] [HAVING…] [ORDER BY…] [WITH OWNERACCESS OPTION] 說明: 用中括號([])括起來的部分表示是可選的,用大括號({})括起來的部分是表示必須從中選擇其中的一個。
1 FROM子句 FROM子句指定了SELECT語句中字段的來源。FROM子句后面是包含一個或多個的表達式(由逗號分開),其中的表達式可為單一表名稱、已保存的查詢或由 INNER JOIN、LEFT JOIN 或 RIGHT JOIN 得到的復合結果。
如果表或查詢存儲在外部數據庫,在IN 子句之后指明其完整路徑。 例:下列SQL語句返回所有有定單的客戶: SELECT OrderID,*erID FROM Orders Customers WHERE *erID=*eersID 2 ALL、DISTINCT、DISTINCTROW、TOP謂詞 (1) ALL 返回滿足SQL語句條件的所有記錄。
如果沒有指明這個謂詞,默認為ALL。 例:SELECT ALL FirstName,LastName FROM Employees (2) DISTINCT 如果有多個記錄的選擇字段的數據相同,只返回一個。
(3) DISTINCTROW 如果有重復的記錄,只返回一個 (4) TOP顯示查詢頭尾若干記錄。也可返回記錄的百分比,這是要用 TOP N PERCENT子句(其中N 表示百分比) 例:返回5%定貨額最大的定單 SELECT TOP 5 PERCENT* FROM [ Order Details] ORDER BY UnitPrice*Quantity*(1-Discount) DESC 3 用 AS 子句為字段取別名 如果想為返回的列取一個新的標題,或者,經過對字段的計算或總結之后,產生了一個新的值,希望把它放到一個新的列里顯示,則用AS保留。
例:返回FirstName字段取別名為NickName SELECT FirstName AS NickName ,LastName ,City FROM Employees 例:返回新的一列顯示庫存價值 SELECT ProductName ,UnitPrice ,UnitsInStock ,UnitPrice*UnitsInStock AS valueInStock FROM Products 二 .WHERE 子句指定查詢條件 1 比較運算符 比較運算符 含義 = 等于 > 大于 < 小于 >= 大于等于 <= 小于等于 <> 不等于 !> 不大于 !< 不小于 例:返回96年1月的定單 SELECT OrderID, CustomerID, OrderDate FROM Orders WHERE OrderDate>#1/1/96# AND OrderDate<#1/30/96# 注意: Mcirosoft JET SQL 中,日期用‘#’定界。日期也可以用Datevalue()函數來代替。
在比較字符型的數據時,要加上單引號'',尾空格在比較中被忽略。 例: WHERE OrderDate>#96-1-1# 也可以表示為: WHERE OrderDate>Datevalue('1/1/96') 使用 NOT 表達式求反。
例:查看96年1月1日以后的定單 WHERE Not OrderDate<=#1/1/96# 2 范圍(BETWEEN 和 NOT BETWEEN) BETWEEN …AND…運算符指定了要搜索的一個閉區間。 例:返回96年1月到96年2月的定單。
WHERE OrderDate Between #1/1/96# And #2/1/96# 3 列表(IN ,NOT IN) IN 運算符用來匹配列表中的任何一個值。IN子句可以代替用OR子句連接的一連串的條件。
例:要找出住在 London、Paris或Berlin的所有客戶 SELECT CustomerID, CompanyName, ContactName, City FROM Customers WHERE City In('London',' Paris',' Berlin') 4 模式匹配(LIKE) LIKE運算符檢驗一個包含字符串數據的字段值是否匹配一指定模式。 LIKE運算符里使用的通配符 通配符 含義 ? 任何一個單一的字符 * 任意長度的字符 # 0~9之間的單一數字 [字符列表] 在字符列表里的任一值 [!字符列表] 不在字符列表里的任一值 - 指定字符范圍,兩邊的值分別為其上下限 例:返回郵政編碼在(171)555-0000到(171)555-9999之間的客戶 SELECT CustomerID ,CompanyName,City,Phone FROM Customers WHERE Phone Like '(171)555-####' LIKE運算符的一些樣式及含義 樣式 含義 不符合 LIKE 'A*' A后跟任意長度的字符 Bc,c255 LIKE'5[*]' 5*5 555 LIKE'5?5' 5與5之間有任意一個字符 55,5wer5 LIKE'5##5' 5235,5005 5kd5,5346 LIKE'[a-z]' a-z間的任意一個字符 5,% LIKE'[!0-9]' 非0-9間的任意一個字符 0,1 LIKE'[[]' 1,* 三 .用ORDER BY子句排序結果 ORDER子句按一個或多個(最多16個)字段排序查詢結果,可以是升序(ASC)也可以是降序(DESC),缺省是升序。
ORDER子句通常放在SQL語句的最后。 ORDER子句中定義了多個字段,則按照字段的先后順序排序。
例: SELECT ProductName,UnitPrice, UnitInStock FROM Products ORDER BY UnitInStock DESC , UnitPrice DESC, ProductName ORDER BY 子句中可以用字段在選擇列表中的位置號代替字段名,可以混合字段名和位置號。 例:下面的語句產生與上列相同的效果。
SELECT ProductName,UnitPrice, UnitInStock FROM Products ORDER BY 1 DESC , 2 DESC,3 四 .運用連接關系實現多表查詢 例:找出同一個城市中供應商和客戶的名字 SELECT *y。
轉載請注明出處華閱文章網 » select語句完整語法