SQL語句在Access和SQLServer里面的不同
來源:懂視網
責編:小采
時間:2020-11-09 07:20:05
SQL語句在Access和SQLServer里面的不同
SQL語句在Access和SQLServer里面的不同:做了一個Winform的營養測量軟件,來回的搗騰著Access數據庫,還是那幾句增刪改查,不過用多了,發現Access數據庫下的SQL語句和SQL Server下正宗的SQL還有有很大的不同。 我的感覺是,Accees數據庫雖然可以稱得上是小型的關系型數據庫,并且也是使用的結構化
導讀SQL語句在Access和SQLServer里面的不同:做了一個Winform的營養測量軟件,來回的搗騰著Access數據庫,還是那幾句增刪改查,不過用多了,發現Access數據庫下的SQL語句和SQL Server下正宗的SQL還有有很大的不同。 我的感覺是,Accees數據庫雖然可以稱得上是小型的關系型數據庫,并且也是使用的結構化

做了一個Winform的營養測量軟件,來回的搗騰著Access數據庫,還是那幾句增刪改查,不過用多了,發現Access數據庫下的SQL語句和SQL Server下正宗的SQL還有有很大的不同。 我的感覺是,Accees數據庫雖然可以稱得上是小型的關系型數據庫,并且也是使用的結構化
做了一個Winform的營養測量軟件,來回的搗騰著Access數據庫,還是那幾句增刪改查,不過用多了,發現Access數據庫下的SQL語句和SQL Server下正宗的SQL還有有很大的不同。
我的感覺是,Accees數據庫雖然可以稱得上是小型的關系型數據庫,并且也是使用的結構化查詢語言SQL,但它的語法(主要體現在函數上),卻類似vbscript的語法,我想,這應該和Access屬于Office系列有關,基于它的開發和應用,自然就與VBA扯上關系,因而Access的函數庫也就是VBA的函數庫,而非SQL函數庫。下面,我們來具體看下Access和SQL Server在查詢語句的編寫上具體的不同。
一、數據類型轉換:
- Access:
SELECT '調查'+CStr(Did) as diaocha FROM CZdengji
- SQL Server:
select artid,'調查'+Cast(listid As varchar) as did from kingart where artdate>=getdate()
Access中SQL查詢的數據類型轉換有很多函數,每一個函數都可以強制將一個表達式轉換成某種特定數據類型。具體如下:CBool(expression) 、CByte(expression) 、CCur(expression) 、CDate(expression) 、CDbl(expression) 、CDec(expression) 、CInt(expression) 、CLng(expression) 、CSng(expression) 、CStr(expression) 、CVar(expression) 、CStr(expression),相信不用說明,大家也看得懂這各種轉換符的意思。
二、IIF函數(ACCESS專用)
- Access:
SELECT Id,IIF(Isfinished=1,'已完成','進行中'),Name,Diaocharen FROM CZdiaocha ORDER BY Isfinished ASC
- SQL Server
的寫法就相對更多,可以自定義函數,也可以使用case語句,如select Id,case Isfinished when 1 then '已完成'
when 0 then '進行中' end,Name,Diaocharen FROM CZdiaocha ORDER BY Isfinished ASC
三、DISTINCT關鍵字用法:
Access里面distinct(expression)的用法單一,
expression
只能為指定字段,而不能為表達式,SQL Server則不同,
expression
除了可以為單個字段,也可以為一個子查詢等復雜表達式。
四、日期格式化
- Access:
使用format()函數,SELECT TOP 5 arttitle,format(artdate,'YY-MM-DD') as arttime FROM kingart WHERE listid=9,這里使用format()函數,指定artdate(日期型)查詢出來的格式為YY-MM-DD。
- SQL Server:
使用convert()函數,select Id,lanmu,title,content, convert(varchar(10),updatetime ,120) as update_time from news,這里的120,是指定格式為YY-MM-DD,如果是其他數字(101-120),就是其他的格式。
其它一些常用的SQL語句集錦
- SELECT Top 5 * From Food WHERE Fid not in(Select top 5 Fid FROM Food) //查詢第5到第10條記錄
- delete from
Food
where charindex('2007',uptime)>0 or charindex('2008',
uptime
)>0 //刪除Food表中uptime列包含有2007或2008的記錄,即刪除時間為2007年和2008年的更新記錄
- select Id,lanmu,title,content, convert(varchar(10),updatetime ,120) as update_time from news //
SQL Server里面的convert函數,轉換成
varchar(10)類型,
120為指定轉換后的格式。
- select Mealtype as 餐別,Fname as 食物名稱,sum(rjjingshisz)/2 as 人均凈食生重總和 from CZdengji WHERE Did=6 group by Mealtype,Fname //分組查詢,GROUP BY的本意就是重復的字段合為一,對應的信息,進行匯總(count、sum等運算)
- Select Count(ID) from Flow where convert(varchar(21),visittime,120) like '2007-01-26% '
,日期型數據模糊查詢。
- select * from ('MSDASQL','DRIVER={SQL Server};SERVER=服務器名字;UID=對端數據庫的賬號;PWD=對端密碼', 對端數據庫.權限者.對端的表) as 表 //跨服務器查詢
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
SQL語句在Access和SQLServer里面的不同
SQL語句在Access和SQLServer里面的不同:做了一個Winform的營養測量軟件,來回的搗騰著Access數據庫,還是那幾句增刪改查,不過用多了,發現Access數據庫下的SQL語句和SQL Server下正宗的SQL還有有很大的不同。 我的感覺是,Accees數據庫雖然可以稱得上是小型的關系型數據庫,并且也是使用的結構化