SQLServer常用函數對比_第1頁
SQLServer常用函數對比_第2頁
SQLServer常用函數對比_第3頁
SQLServer常用函數對比_第4頁
SQLServer常用函數對比_第5頁
已閱讀5頁,還剩84頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、SQLServer 和 Oracle 的常用函數對比 1. 絕對值 S:select abs(-1) value O:select abs(-1) value from dual 2. 取整(大) S:select ceiling(-1.001) value O:select ceil(-1.001) value from dual 3. 取整(小) S:select floor(-1.001) value O:select floor(-1.001) value from dual 4. 取整(截取) S:select cast(-1.002 as int) value O:select t

2、runc(-1.002) value from dual 5. 四舍五入 S:select round(1.23456,4) value 1.23460 O:select round(1.23456,4) value from dual 1.2346 6. e為底的冪 S:select Exp(1) value 2.7182818284590451 O:select Exp(1) value from dual 2.71828182 7. 取 e 為底的對數 S:select log(2.7182818284590451) value 1 O:select ln(2.7182818284590

3、451) value from dual; 1 8. 取 10 為底對數 S:select log10(10) value 1 O:select log(10,10) value from dual; 1 9. 取平方 S:select SQUARE(4) value 16 O:select power(4,2) value from dual 16 10. 取平方根 S:select SQRT(4) value 2 O:select SQRT(4) value from dual 2 11. 求任意數為底的冪 S:select power(3,4) value 81 O:select pow

4、er(3,4) value from dual 81 12. 取隨機數 S:select rand() value O:select sys.dbms_random.value(0,1) value from dual; 13. 取符號 S:select sign(-8) value -1 O:select sign(-8) value from dual -1 數學函數 14. 圓周率 S:Select PI() value 3.1415926535897931 O:不知道 15. sin,cos,tan 參數都以弧度為單位 例如: select sin(PI()/2) value 得到 1

5、(SQLServer) 16. Asin,Acos,Atan,Atan2 返回弧度 17. 弧度角度互換 (SQLServer,Oracle 不知道 ) DEGREES :弧度-角度 RADIANS :角度 -弧度 數值間比較 18. 求集合最大值 S:select max(value) value from (select 1 value union select -2 value union select 4 value union select 3 value)a O:select greatest(1,-2,4,3) value from dual 19. 求集合最小值 S:selec

6、t min(value) value from (select 1 value union select -2 value union select 4 value union select 3 value)a O:select least(1,-2,4,3) value from dual 20. 如何處理null值(F2中的null以10代替) S:select F1,IsNull(F2,10) value from Tbl O:select F1,nvl(F2,10) value from Tbl 數值間比較 21. 求字符序號 S:select ascii(a) value O:sel

7、ect ascii(a) value from dual 22. 從序號求字符 S:select char(97) value O:select chr(97) value from dual 23. 連接 S:select 11+22+33 value O:select CONCAT(11,22)|33 value from dual 23子串位置-返回3 S:select CHARINDEX(s,sdsq,2) value O:select INSTR(sdsq,s,2) value from dual 23模糊子串的位置-返回2,參數去掉中間%則 返回7 S:select pati nd

8、ex(%d%q%,sdsfasdqe) value O:oracle沒發現,但是in str可以通過第四霾問 證 刂瞥魷執問?BRselect INSTR(sdsfasdqe,sd,1,2) value from dual 返回 6 24. 求子串 S:select substri ng(abcd,2,2) value O:select substr(abcd,2,2) value from dual 25子串代替返回aijklmnef S:Select STUFF(abcdef, 2, 3, ijklmn) value O:Select Replace(abcdef, bed, ijkl m

9、n) value from dual 26. 子串全部替換 S:沒發現 O:select Translate(fasdbfasegas,fa我)value from dual 27. 長度 S:len,datalength O:length 28. 大小寫轉換 lower,upper 29. 單詞首字母大寫 s:沒發現 O:select INITCAP(abcd dsaf df) value from dual 30. 左補空格( LPAD 的第一個參數為空格則同 space函 數) S:select space(10)+abcd value O:select LPAD(abcd,14) va

10、lue from dual 31. 右補空格( RPAD 的第一個參數為空格則同 space函 數) S:select abcd+space(10) value O:select RPAD(abcd,14) value from dual 32. 刪除空格 S:ltrim,rtrim O:ltrim,rtrim,trim 33. 重復字符串 S:select REPLICATE(abcd,2) value O:沒發現 34. 發音相似性比較 (這兩個單詞返回值一樣,發 音相同 ) S:Select SOUNDEX (Smith), SOUNDEX (Smythe) O:Select SOUND

11、EX (Smith), SOUNDEX (Smythe) from dual SQLServer 中用 Select DIFFERENCE(Smithers, Smythers) 比較 soundex 的差 返回 0-4,4 為同音, 1 最高 dual dual 日期函數 35.系統時間 S:select getdate() value O:select sysdate value from dual 36.前后幾日 直接與整數相加減 37.求日期 S:select convert(char(10),getdate(),20) value O:select trunc(sysdate) va

12、lue from dual select to_char(sysdate,yyyy-mm-dd) value from 38.求時間 S:select convert(char(8),getdate(),108) value O:select to_char(sysdate,hh24:mm:ss)value from 39.取日期時間的其他部分 S:DATEPART 和 DATENAME 函數 (第一個參 數決定) O:to_char 函數 第二個參數決定 參數 下表需要補充 year yy, yyyy quarter qq, q (季度 ) month mm, m (m O 無效 ) day

13、ofyear dy, y (O 表星期) day dd, d (d O 無效) week wk, ww (wk O 無效 ) weekday dw (O 不清楚) Hour hh,hh12,hh24 (hh12,hh24 S無效) minute mi, n (n O 無效) sec ond ss, s (s O無效) millisecond ms (O 無效) 40. 當月最后一天 S:不知道 O:select LAST_DAY(sysdate) value from dual 41. 本星期的某一天(比如星期日) S:不知道 O:Select Next_day(sysdate,7) vaul

14、e FROM DUAL; 42. 字符串轉時間 S: 可 以 直 接 轉 或 者 select cast(2004-09-08as datetime) value O:Select To_date(2004-01-05 22:09:38,yyyy-mm-dd hh24-mi-ss) vaule FROM DUAL; 43. 求兩日期某一部分的差(比如秒) S:select datediff(ss,getdate(),getdate()+12.3) value O:直接用兩個日期相減(比如 d1-d2=12.3) Select (d1-d2)*24*60*60 vaule FROM DUAL;

15、44. 根據差值求新的日期(比如分鐘) S:select dateadd(mi,8,getdate() value O:Select sysdate+8/60/24 vaule FROM DUAL; 45. 求不同時區時間 S:不知道 O:Select New_time(sysdate,ydt,gmt ) vaule FROM DUAL; 時區參數 ,北京在東 8 區應該是 Ydt AST ADT 大西洋標準時間 BST BDT 白令海標準時間 CST CDT 中部標準時間 EST EDT 東部標準時間 GMT 格林尼治標準時間 HST HDT 阿拉斯加夏威夷標準時間 MST MDT 山區標準

16、時間 NST 紐芬蘭標準時間 PST PDT 太平洋標準時間 YST YDT YUKON 標準時間 配置 SQL Server 數據庫 EXEC sp_dboption pubs, read only, True 此選項把數據庫 “ pubs” 設置為只讀。 EXEC sp_dboption pubs autoshrink true 此選項把符合條件的 “pubs” 數據庫文件設置為自動 周期性收縮。 EXEC sp_dboption pubs single user 此命令每次只允許一個用戶訪問數據庫。 DBCC SHRINKDATABASE(PUBS, 10) 會減小“ pubs”數據庫中

17、文件的大小,并允許有10% 的可用空間。 使用 T-SQL 創建表 create table MyTable (stdID int, stdName varchar(50) ) 自定義數據類型 EXEC sp_addtype City, nvarchar(15), NULL EXEC sp_addtype PostCode, nvarchar(6), NULL EXEC sp_addtype NCode, nvarchar(18), NULL 刪除自定義數據類型 EXEC sp_droptype city 使用 T-SQL 創建表 CREATE TABLE Categories (Catego

18、ryID int IDENTITY(1,1), NOT CategoryName nvarchar(15) NULL, Description ntext NULL, Picture image NULL) 實體完整性實現 l 主鍵約束 CREATE TABLE jobs( Job_id smallint PRIMARY KEY, job_desc varchar(50) NOT NULL) l 唯一約束 CREATE TABLE jobs( Job_id smallint UNIQUE) 標識列 CREATE TABLE jobs( Job_id smallint IDENTIRY (2,1

19、) PRIMARY KEY) l Uniqueidentifier 數據類型和 NEWID 函數 CREATE TABLE Customer (CustID uniqueidentifier NOT NULL DEFAULT NEWID(), CustName char(30) NOT NULL) INSERT Customer VALUES (NEWID(),ASB) l 引用完整性實現 ALTER TABLE dbo.Orders ADD CONSTRAINT FK_Orders_Customers FOREIGN KEY (CustomerID) REFERENCES dbo.Custo

20、mers(CustomerID) l 更新表結構 ALTER TABLE MyTable ALTER COLUMN NullCOl NVARCHAR(20) NOT NULL ALTER TABLE jobs ADD HIRE_DATE DATETIME ALTER TABLE Doc_ED DROP COLUMN Column_B ALTER TABLE Doc_ED WITH NOCHECK ADD CONSTRAINT Exd_Check CHECK (Column_a 1) l 在已有字段中增加標識約束時,必須先刪 除該字段,再新建字段。 alter table mytable dro

21、p column userid alter table mytable add userid int identity(1,1) l刪除表 DROP TABLE Airlines_Master lDEFAULT 約束 USE Northwind CREATE TABLE ABC (ASD int Default 8, ASDE varchar(20) Default UNKNOWN) USE Northwind ALTER TABLE dbo.Customers ADD CONSTRAINT DF_contactname DEFAULT UNKNOWN FOR ContactName l CH

22、ECK 約束 CREATE TABLE ABCD (ASD int CHECK(ASD 01-01-1900 AND BirthDate 0-011-2010) PRIMARY KEY 約束 CREATE TABLE AWC (ASD int CHECK(ASD 100) PRIMARY KEY ASDE varchar(80) Default UNKNOWN) USE Northwind ALTER TABLE Customers ADD CONSTRAINT PK_Customers PRIMARY KEY (CustomerID) l UNIQUE 約束 CREATE TABLE AAC

23、 (ASD int CHECK(ASD 100) PRIMARY KEY , ASDE int UNIQUE) USE Northwind ALTER TABLE Suppliers ADD CONSTRAINT U_CompanyName UNIQUE (CompanyName) l FOREIGN KEY 約束 CREATE TABLE ACC (ASD int CHECK(ASD + type As MyTitle FROM titles 3. 聚合函數 SELECT productid ,SUM(quantity) AS total_quantity FROM orderhist GR

24、OUP BY productid 顯示所有 type 的值,并按 type 分組求平均值 SELECT type, AVG(price) FROM titles WHERE royalty = 10 GROUP BY ALL type 條件中帶有聚合函數的,要用 Having 子句 SELECT productid, SUM(quantity) AS total_quantity FROM orderhist GROUP BY productid HAVING SUM(quantity)=30 4. 模糊查詢 WHERE companyname LIKE %Restaurant% WHERE

25、fax IS NULL WHERE country IN (Japan, Italy) WHERE unitprice BETWEEN 10 AND 20 1.說明:復制表 (只復制結構 ,源表名: a 新表名: b) SQL: select * into b from a where 11 2.說明:拷貝表 (拷貝數據 ,源表名: a 目標表名: b) SQL: insert into b(a, b, c) select d,e,f from b; 3. 說明:顯示文章、提交人和最后回復時間 SQL: select a.title,a.username,b.adddate from tabl

26、e a,(select max(adddate) adddate from table where table.title=a.title) b 4. 說明:外連接查詢 (表名 1:a 表名 2:b) SQL: select a.a, a.b, a.c, b.c, b.d, b.f from a LEFT OUTER JOIN b ON a.a = b.c 5. 說明:日程安排提前五分鐘提醒 SQL: select * from 日程安排 where datediff(minute,f 開始時間 ,getdate()5 6. 說明:兩張關聯表,刪除主表中已經在副表中沒有 的信息 SQL: de

27、lete from info where not exists ( select * from infobz where info.infid=infobz.infid ) 說明: - SQL: SELECT A.NUM, A.NAME, B.UPD_DATE, B.PREV_UPD_DATE FROM TABLE1, (SELECT X.NUM, X.UPD_DATE, Y.UPD_DATE PREV_UPD_DATE FROM (SELECT NUM, UPD_DATE, INBOUND_QTY , STOCK_ONHAND FROM TABLE2 WHERE TO_CHAR(UPD_DA

28、TE,YYYY/MM) TO_CHAR(SYSDATE, YYYY/MM) X, (SELECT NUM, UPD_DATE, STOCK_ONHAND FROM TABLE2 WHERE TO_CHAR(UPD_DATE,YYYY/MM) = 1, + TO_CHAR(TO_DATE(TO_CHAR(SYSDATE, YYYY/MM) | /01,YYYY/MM/DD) YYYY/MM) ) Y , WHERE X.NUM = Y .NUM (+) AND X.INBOUND_QTY NVL(Y .STOCK_ONHAND,0) X.STOCK_ONHAND ) B WHERE A.NUM

29、= B.NUM 說明: SQL: select * from studentinfo where not exists(select * from student where studentinfo.id=student.id) and 系 名 稱 =&strdepartmentname& and 專 業 名 稱 =&strprofessionname& order by 性別 ,生源地 ,高考 總成績 7. 說明: 從數據庫中去一年的各單位電話費統計 ( 電話費定額 賀電化肥清單兩個表來源) SQL: SELECT a.userper, a.tel, a.standfee, TO_CHAR(

30、a.telfeedate, yyyy) AS telyear, SUM(decode(TO_CHAR(a.telfeedate, mm), 01, a.factration) AS JAN, SUM(decode(TO_CHAR(a.telfeedate, mm), 02, a.factration) AS FRI, SUM(decode(TO_CHAR(a.telfeedate, mm), 03, a.factration) AS MAR, SUM(decode(TO_CHAR(a.telfeedate, mm), 04, a.factration) AS APR, SUM(decode(T

31、O_CHAR(a.telfeedate, mm), 05, a.factration) AS MAY, SUM(decode(TO_CHAR(a.telfeedate, mm), 06, a.factration) AS JUE, SUM(decode(TO_CHAR(a.telfeedate, mm), 07, a.factration) AS JUL, SUM(decode(TO_CHAR(a.telfeedate, mm), 08, a.factration) AS AGU, SUM(decode(TO_CHAR(a.telfeedate, mm), 09, a.factration)

32、AS SEP, SUM(decode(TO_CHAR(a.telfeedate, a.factration) AS OCT, mm), 10, SUM(decode(TO_CHAR(a.telfeedate, mm), 11, a.factration) AS NOV, SUM(decode(TO_CHAR(a.telfeedate, mm), 12, a.factration) AS DEC FROM (SELECT a.userper, a.tel, a.standfee, b.telfeedate, b.factration FROM TELFEESTAND a, TELFEE b WH

33、ERE a.tel = b.telfax) a GROUP BY a.userper, a.tel, a.standfee, TO_CHAR(a.telfeedate, yyyy) 8. 說明:四表聯查問題: SQL: select * from a left inner join b on a.a=b.b right inner join c on a.a=c.c inner join d on a.a=d.d where 9. 說明:得到表中最小的未使用的 ID 號 SQL: SELECT (CASE WHEN EXISTS(SELECT * FROM Handle b WHERE b.H

34、andleID = 1) THEN MIN(HandleID) + 1 ELSE 1 END) as HandleID FROM Handle WHERE NOT HandleID IN (SELECT a.HandleID - 1 FROM Handle a) 9.SQL 語句技巧 9.1、一個 SQL 語句的問題 :行列轉換 select * from v_temp 上面的視圖結果如下 : user_name role_name 系統管理員 管理員 feng 管理員 feng 一般用戶 test 一般用戶 想把結果變成這樣 : user_name role_name 系統管理員 管理員 f

35、eng 管理員 ,一般用戶 test 一般用戶 create table a_test(name varchar(20),role2 varchar(20) insert into a_test values李,管理員) insert into a_test values張,管理員) insert into a_test values張,一般用戶) insert into a_test values(常,一般用戶) create function join_str(content varchar(100) returns varchar(2000) as begin declare str v

36、archar(2000) set str= select str=str+,+rtrim(role2) from a_test where name=content select str=right(str,len(str)-1) return str end go -調用: select name,dbo.join_str(name) role2 from a_test group by name -select distinct name,dbo.uf_test(name) from a_test 9.2、求助!快速比較結構相同的兩表 結構相同的兩表,一表有記錄 3 萬條左右,一表有記 錄

37、 2 萬條左右,我怎樣快速查找兩表的不同記錄? 給你一個測試方法,從 northwind 中的 orders 表取數 據。 select * into n1 from orders select * into n2 from orders select * from n1 select * from n2 -添加主鍵,然后修改 n1 中若干字段的若干條 alter table n1 add constraint pk_n1_id primary key (OrderID) alter table n2 add constraint pk_n2_id primary key (OrderID)

38、select OrderID from (select * from n1 union select * from n2) a group by OrderID having count(*) 1 應該可以,而且將不同的記錄的 ID 顯示出來。 下面的適用于雙方記錄一樣的情況, select * from n1 where orderid in ( select OrderID from (select * from n1 union select * from n2) a group by OrderID having count(*) 1 ) 至于雙方互不存在的記錄是比較好處理的 - 刪除

39、 n1,n2 中若干條記錄 delete from n1 where orderID in (10728,10730) delete from n2 where orderID in (11000,11001) * * - 雙方都有該記錄卻不完全相同 select * from n1 where orderid in ( select OrderID from (select * from n1 union select * from n2) a group by OrderID having count(*) 1 ) union -n2 中存在但在 n1 中不存的在 10728,10730

40、select * from n1 where OrderID not in (select OrderID from n2) union -n1 中存在但在 n2 中不存的在 11000,11001 select * from n2 where OrderID not in (select OrderID from n1) 9.3、四種方法取表里 n 到 m 條紀錄: 1. select top m * into 臨時表 (或表變量 ) from tablename order by columnname - 將 top m 筆插入 set rowcount n select * from 表

41、變量 order by columnname desc 2. select top n * from (select top m * from tablename order by columnname) a order by columnname desc 3如果table name里沒有其他ide ntity列,那么: select identity(int) id0,* into #temp from tablename 取n到m條的語句為: select * from #temp where id0 =n and id0 1 exec(sql) open cur_rows fetch

42、cur_rows into id,max while fetch_status=0 begin select max = max -1 set rowcount max select type = xtype from syscolumns where id=object_id(t_name) and name=f_key if type=56 select sql = delete from +t_name+ where + f_key+ = + id if type=167 select sql = delete from +t_name+ where + f_key+ = + id +

43、exec(sql) fetch cur_rows into id,max end close cur_rows deallocate cur_rows set rowcount 0 end select * from systypes select * from syscolumns where id = object_id(a_dist) 9.4. 查詢數據的最大排序問題(只能用一條語句寫) CREATE TABLE hard (qu char (11) ,co char (11) ,je numeric(3, 0) insert into hard values (A,1,3) inser

44、t into hard values (A,2,4) insert into hard values (A,4,2) insert into hard values (A,6,9) insert into hard values (B,1,4) insert into hard values (B,2,5) insert into hard values (B,3,6) insert into hard values (C,3,4) insert into hard values (C,6,7) insert into hard values (C,2,3) 要求查詢出來的結果如下: qu c

45、o je A 6 9 A 2 4 B 3 6 B 2 5 C 3 4 就是要按 qu 分組,每組中取 je 最大的前 2 位! 而且只能用一句 sql 語句! select * from hard a where je in (select top 2 je from hard b where a.qu=b.qu order by je) 9.5. 求刪除重復記錄的 sql 語句? 怎樣把具有相同字段的紀錄刪除,只留下一條。 例如,表test里有id,name字段 如果有name相同的記錄只留下一條,其余的刪除。 name的內容不定,相同的記錄數不定。 有沒有這樣的 sql 語句? A: 個完

46、整的解決方案: 將重復的記錄記入 temp1 表: select 標志字段 id,count(*) into temp1 from 表名 group by 標志字段 id having count(*)1 2、將不重復的記錄記入 temp1 表: insert temp1 select 標志字段 id,count(*) from 表名 group by 標志字段 id having count(*)=1 3、作一個包含所有不重復記錄的表: select * into temp2 from 表名 where 標志字段 id in(select 標志字段 id from temp1) 4、刪除重復

47、表 : delete 表名 5、恢復表: insert 表名 select * from temp2 6、刪除臨時表 : drop table temp1 drop table temp2 B: create table a_dist(id int,name varchar(20) insert into a_dist values(1,abc) insert into a_dist values(1,abc) insert into a_dist values(1,abc) insert into a_dist values(1,abc) exec up_distinct a_dist,id

48、 select * from a_dist create procedure up_distinct(t_name varchar(30),f_key varchar(30) -f_key表示是分組字段,即主鍵字段 as begin declare max integer,id varchar(30) ,sql varchar(7999) ,type integer select sql = declare cur_rows cursor for select +f_key+ ,count(*) from +t_name + group by +f_key + having count(*)

49、1 exec(sql) open cur_rows fetch cur_rows into id,max while fetch_status=0 begin select max = max -1 set rowcount max select type = xtype from syscolumns where id=object_id(t_name) and name=f_key if type=56 select sql = delete from +t_name+ where + f_key+ = + id if type=167 select sql = delete from +

50、t_name+ where + f_key+ = + id + exec(sql) fetch cur_rows into id,max end close cur_rows deallocate cur_rows set rowcount 0 end select * from systypes select * from syscolumns where id = object_id(a_dist) 10.1. 行列轉換 -普通 假設有張學生成績表(CJ)如下 Name Subject Result 張三 語文 80 張三 數學 90 張三 物理 85 李四 語文 85 李四 數學 92

51、李四 物理 82 想變成 姓名 語文 數學 物理 張三 80 90 85 李四 85 92 82 declare sql varchar(4000) set sql = select Name select sql = sql + ,sum(case Subject when +Subject+ then Result end) +Subject+ from (select distinct Subject from CJ) as a select sql = sql+ from test group by name exec(sql) 10.2. 行列轉換 -合并 有表 A, id pid

52、1 1 1 2 1 3 2 1 2 2 3 1 如何化成表 B: id pid 1 1,2,3 2 1,2 3 1 創建一個合并的函數 create function fmerg(id int) returns varchar(8000) as begin declare str varchar(8000) set str= select str=str+,+cast(pid as varchar) from 表 A where id=id set str=right(str,len(str)-1) return(str) End go -調用自定義函數得到結果 select distinct

53、 id,dbo.fmerg(id) from 表 A 10.3. 如何取得一個數據表的所有列名 方法如下:先從 SYSTEMOBJECT 系統表中取得數據 表的 SYSTEMID, 然后再 SYSCOLUMN 表中取得該數 據表的所有列名。 SQL 語句如下: declare objid int,objname char(40) set objname = tablename select objid = id from sysobjects where id = object_id(objname) select Column_name = name from syscolumns wher

54、e id = objid order by colid 是不是太簡單了? 呵呵 不過經常用阿 . 10.4. 通過 SQL 語句來更改用戶的密碼 修改別人的 ,需要 sysadmin role EXEC sp_password NULL, newpassword, User 如 果 帳 號 為 SA 執 行 EXEC sp_password NULL, newpassword, sa 10.5. 怎么判斷出一個表的哪些字段不允許為空? select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where IS_NULLABLE=NO and TABL

55、E_NAME=tablename 10.6. 如何在數據庫里找到含有相同字段的表? a. 查已知列名的情況 SELECT as TableName, as columnname From syscolumns a INNER JOIN sysobjects b ON a.id=b.id AND b.type=U AND =你的字段名字 b. 未知列名查所有在不同表出現過的列名 Select As tablename, As columnname From syscolumns s1, sysobjects o Where s1.

56、id = o.id And o.type = U And Exists ( Select 1 From syscolumns s2 Where = And s1.id s2.id ) 10.7. 查詢第 xxx 行數據 假設 id 是主鍵: select * from (select top xxx * from yourtable) aa where not exists(select 1 from (select top xxx-1 * from yourtable) bb where aa.id=bb.id) 如果使用游標也是可以的 fetch absol

57、ute number from cursor_name 行數為絕對行數 10.8. SQL Server 日期計算 a. 一個月的第一天 SELECT DATEADD(mm, DATEDIFF(mm,0,getdate(), 0) b. 本周的星期一 SELECT DATEADD(wk, DATEDIFF(wk,0,getdate(), 0) c. 一年的第一天 SELECT DATEADD(yy, DATEDIFF(yy,0,getdate(), 0) d. 季度的第一天 SELECT DATEADD(qq, DATEDIFF(qq,0,getdate(), 0) e. 上個月的最后一天 S

58、ELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(mm,0,getdate(), 0) f. 去年的最后一天 SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate(), 0) g. 本月的最后一天 SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate()+1, 0) h. 本月的第一個星期一 select DATEADD(wk, DATEDIFF(wk,0, dateadd(dd,6-datepart(day,getdate(),getdate() ),

59、 0) i. 本年的最后一天 SELECT dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate()+1, 0)。 11.1.獲取表結構 把 sysobjects 替換 成 tablename 即可 SELECT CASE IsNull(I.name, ) When Then Else * End as IsPK, Object_Name(A.id) as t_name, A.name as c_name, IsNull(SubString(M.text, 1, 254), ) as pbc_init, T.name as F_DataType, CA

60、SE IsNull(TYPEPROPERTY(T.name, Scale), ) WHEN Then Cast(A.prec as varchar) ELSE Cast(A.prec as varchar) + , + Cast(A.scale as varchar) END as F_Scale, A.isnullable as F_isNullAble FROM Syscolumns as A JOIN Systypes as T ON (A.xType = T.xUserType AND A.Id = Object_id(sysobjects) ) LEFT JOIN ( SysInde

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論