sql語句oracle和mysql中可以執行,sqlserver中不行

時間 2022-03-05 13:00:13

1樓:張清竹卜儀

select

count(*)

from

cos_mobilenumber

aorder

bya.createdate

desc;

這句的order

by再sql中沒意義

select

count(*)只返回一行一列,沒必要進行進行排序可以直接寫成

select

count(*)

from

cos_mobilenumber

2樓:貢秀愛偶戌

當然錯的,

在mssql中你的語句是統計表cos_mobilenumber總數量,

所以不能用order

by,如果你想分組統計需要在order

bycreatedate

前面加上

group

bycreatedate.

以下兩種方法都是對的,看你需要哪種:

1.select

count(*)

from

cos_mobilenumber

2.select

count(*)

from

cos_mobilenumber

agroup

bya.createdate

order

bya.createdate

desc

這句oracle中可以執行的sql語句怎麼改寫成在sqlserver中也能執行?

3樓:匿名使用者

需要查一下sqlserver中的標準函式..儘管兩個資料庫都支援sql但是標準函式,解析方式還是有所區別

4樓:射手幽靈伊

使用 select convert(varchar(20),getdate(),120) 看一下,會得到你需要的格式。具體的sql語句就可以自己寫了。

5樓:匿名使用者

就是時間函式換換 啊 還有sysdate 也換成getdate()

6樓:匿名使用者

改成 sql1999標準,可在oracle和sqlserver都能執行

sql server的sql語句和oracle的sql語句有什麼不同嗎?

7樓:荼糜

oracle與sql server都遵循sql-92標準:

區別如下:

1.oracle中表名,欄位名,儲存過程名,變數名不能超過30個字串長度。

2.oracle中不支援top 語法。使用whererownum < n 代替。但需要注意如果在top前有排序的操作,則需要先排序在利用rownum取得。

3.oracle中游標的使用與sqlserver中有挺大差別,主要是在迴圈控制方面不一致。

在oracle中如果某列是date型別,那麼它預設的格式是yyyy-mm-dd,如果使用where coldate = 『2005-06-08 17:14:57』就會出錯,『2005-06-08』可以。

如果此時需要精確比較時間(小時,分,秒),可以採用下列方法:to_date('2005-6-8 17:14:

57','yyyy-mm-dd hh24:mi:ss')。

由於oracle和sqlserver在datetime上對sql標準的拓展實現方式不同,因此不能用同乙個sql實現。

4.oracle中的timestamp(時間戳)與sqlserver中的差別很大。sqlserver中的timestamp是二進位制格式儲存在資料庫中,可以將dataset中的這個字段型別設定為base64binary型別。

oracle中的timestamp是時間格式儲存的。因此,無法用同乙個dataset既裝載sqlserver的timestamp,有裝載oracle的timestamp.由於在應用程式中很少用到這個值,因此可以不檢索這個字段。

5.oracle中的timestamp不能像sqlserver在傳入資料的時候自動填充,可以設定預設值systimestamp來實現類似功能。

6.oracle中沒有boolean的字段型別,可以用intger或者char代替sqlserver中的bit型別。

7.oracle中會將」」空字串當多null處理,也就是說,當應用程式往資料庫中插入乙個空字串時,實際資料庫會嘗試插入乙個null。如果這個欄位是notnull型別,那麼就會出錯,這種情況下可以用別的預設值代替空字串。

當從sqlserver匯入資料到oracle的時候,在notnull列上的空字串會導致匯出操作失敗。此時可以在匯出嚮導中手工修改sql指令碼,將空字串設定成乙個特殊值。

8.oracle中不支援,select . . into建立新錶,要用create table 表名as select 語句 ,建立新錶。

9.在oracle中連線字串用 『||』 或concat(col1,col2)函式,不能使用『+』。

統配符 ,[^] ,oracle好像也不支援。

8樓:手機使用者

語法是都一樣的。只是有些特殊的功能不太一樣,但主要不是體現在 sql 語句上。

sql 語句是一種資料庫通用的類似於協議的東西,沒有區別的。

語法差不多,但是要移植的話還是夠得改,oracle 沒有 select top n,函式也有很多不同,

儲存過程的使用就差得更遠了!

9樓:匿名使用者

基本上都是相似的,但值得注意的幾個地方(是我們經常碰到的):

1.資料型別是varchar2而不是varchar,2.有資料型別number,沒有資料型別numeric,3.

還有就是字元的連線,用的是「||」而不是"+",4.取得系統時間是sysdate ,而不是函式getdate()還有一些在具體的使用中需要注意的,

可以檢視sql server與oracle的對比列表。

呵呵,希望能有幫助,^_^

10樓:匿名使用者

基本沒有什麼太大區別 sql是標準的 只是小地方有所區別

11樓:

1. 基本應用上,sql server 和oracle都遵循sql 92語法標準。

2. 實際應用中大家都會超出以上標準,使用各家資料庫廠商都提供的豐富的自定義標準函式庫和語法。

3. 微軟sql server的sql 擴充套件叫t-sql(transcate sql).

4. oracle 的sql 擴充套件叫pl-sql.

5. 最簡單的插入、刪除操作都差不多,但是稍微複雜一點,都不一樣了。比如涉及到跨資料表,跨資料庫,跨使用者的操作的語法不一樣。

6. 乙個很簡單的例子,去資料庫系統時間的寫法

tsql: select getdate()

pl-sql: select sysdate from dual

12樓:

這裡有

13樓:

送你四個字:大同小異

sqlserver 和 mysql 兩者的sql語句 可以兼用嗎?

14樓:烈焰風暴

基本的抄sql語句可以直接襲使用。

但一些特殊的sql語句,建表

bai語句,函式各個資料du庫會有所區別

比如選擇zhi資料庫前幾條資料的sql語句:

mysql 語法

select * from persons limit 5sql server 的語

dao法

select top 2 * from persons使用時要注意

15樓:匿名使用者

標準的所有資料庫bai都能du

用,如:select * from tablename

但在zhi實際開發中大多數是dao不能用的,如回mysql的:select * from tablename limit 0,10,在其他資料庫答中不能用,sqlserver中要寫成:select top 10 * from tablename

16樓:匿名使用者

標準sql可以。sqlserver沒有sequence,一些函式名稱會不一樣。

17樓:匿名使用者

有的能,有的不能。sql有個ansi標準,但每個資料庫軟體都有自己的擴充,就拿

版mysql來說吧,權他的擴充語句是以 /*!版本號 為開頭 */ 為結尾的,而這種格式在其他資料庫中被解釋成注釋,並不執行。

18樓:匿名使用者

語句大部分一樣。

但mysql中批量語句執行需要";"結尾,有些關鍵函式不一樣,有些函式不支援子查詢等等

oracle中sql語句如何動態拼接

龍氏風采 sql code 在儲存過程裡面完成唄 例 create or replace procedure yyp cwdh table name varchar isstr sql varchar2 400 begin str sql select from table name where 1...

Oracle資料庫課程,用SQL語句

create table student id number 10 name varchar2 20 not null,age number 2 not null,primary key id insert into student id,name,age values 1,張三 20 commit...

如何獲取oracle資料庫中sql語句的執行時間

rs s.executequery sql 到這一句,根本沒有fetch資料。整個時間應該是,到迴圈取完結果集為止。 杜爺1號 通過oracle執行計畫可以看到sql的執行時間。explain plan for select from table select from table dbms xpl...