ERP數(shù)據(jù)常用維護(hù)語句(天書).docx_第1頁
ERP數(shù)據(jù)常用維護(hù)語句(天書).docx_第2頁
ERP數(shù)據(jù)常用維護(hù)語句(天書).docx_第3頁
ERP數(shù)據(jù)常用維護(hù)語句(天書).docx_第4頁
ERP數(shù)據(jù)常用維護(hù)語句(天書).docx_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

用友維護(hù)人員常用SQL語句 (上)-查詢用友版本號use ufsystemgoselect * from UA_Versiongo-查看系統(tǒng)用戶信息表use ufsystemselect cUser_Id as 操作員編碼cUser_Name as 操作員名稱nState as 是否停用iAdmin as 是否帳套主管理cDept as 所屬部門cBelongGrp as 所在組nState as 是否停用from UA_User-查看具有帳套主管身份的操作員select cUser_Id as 操作員編碼cUser_Name as 操作員名稱from UA_User where iAdmin=1;-查看被停用的操作員select cUser_Id as 操作員編碼cUser_Name as 操作員名稱from UA_User where nState=1;-帳套主子表相關(guān)信息use ufsystem-帳套主表selectcAcc_Id as 賬套號cAcc_Name as 賬套名稱cAcc_Path as 賬套路徑iYear as 啟用會計(jì)期年iMonth as 啟用會計(jì)期月cAcc_Master as 賬套主管cCurCode as 本幣代碼cCurName as 本幣名稱cUnitName as 單位名稱cUnitAbbre as 單位簡稱cUnitAddr as 單位地址cUnitZap as 郵政編碼cUnitTel as 聯(lián)系電話cUnitFax as 傳真cUnitEMail as 電子郵件cUnitTaxNo as 稅號cUnitLP as 法人cEntType as 企業(yè)類型cTradeKind as 行業(yè)類型cIsCompanyVer as 是否集團(tuán)版cDomain as 域名cDescxription as 備注cOrgCode as 機(jī)構(gòu)編碼iSysID as 賬套內(nèi)部標(biāo)識from ua_account-帳套子表select cAcc_Id as 賬套號iYear as 賬套年度cSub_Id as 模塊標(biāo)識bIsDelete as 是否刪除bClosing as 是否關(guān)閉iModiPeri as 會計(jì)期間dSubSysUsed as 啟用會計(jì)日期cUser_Id as 操作員dSubOriDate as 啟用自然日期from ua_account_sub-當(dāng)客戶的數(shù)據(jù)在其它機(jī)器上做的升級然后拷回到原機(jī)器/*拷回的數(shù)據(jù),通過系統(tǒng)管理在原機(jī)器上引入后,并不會在ufsystem數(shù)據(jù)庫中的ua_account_sub這個帳套子表中回寫上一年度的bClosing字段來關(guān)閉上一年度*/-比如002帳套結(jié)轉(zhuǎn)后年度為2010則用于關(guān)閉上一(2009)年度的sql如下:select * from ua_account_sub where cAcc_Id=002 and iYear=2008update ua_account_sub set bclosing=0where cAcc_Id=002 and iYear=2008-清除異常任務(wù)及單據(jù)鎖定use ufsystemdelete from ua_taskdelete from ua_taskloggodelete from ufsystem.ua_taskdelete from ufsystem.ua_taskloggoSelect *From ua_taskWhere(cacc_id=*) -注:(*為賬套號)-科目鎖定的解決/*XX科目已經(jīng)被用戶XX鎖定”或“科目(xxxxxx)正在被機(jī)器(xxxx)上的用戶(xxx)進(jìn)行(xxxx)操作鎖定請稍候再試”。 */use UFDATA_002_2008select ccode as 科目編碼cauth as 功能名稱cuser as 用戶名cmachine as 機(jī)器名from GL_mccontroldelete from GL_mccontrol-如何取得一個數(shù)據(jù)表的所有列名/*方法如下:先從SYSTEMobxject系統(tǒng)表中取得數(shù)據(jù)表的SYSTEMID然后再SYSCOLUMN表中取得該數(shù)據(jù)表的所有列名。SQL語句如下:*/*(方法一*/select * from ufsystem.ua_accountselect * from syscolumns where id=obxject_id(ua_account)declare objid intobjname char(40)set objname = ua_accountselect objid = id from sysobxjects where id = obxject_id(objname)select Column_name = name from syscolumns where id = objid order by colid/*(方法二(鄒建)*/-跟蹤程序的運(yùn)行就可以了./*開始-程序-MS SQLSERVER-事件探察器(SQL Profiler)-文件-新建-跟蹤.-設(shè)置要跟蹤的服務(wù)器的信息(連接服務(wù)器)-確定-設(shè)置跟蹤的項(xiàng)目.-然后數(shù)據(jù)庫的調(diào)用情況就會顯示出來在跟蹤項(xiàng)目設(shè)置中如果不熟悉的話一般用默認(rèn)設(shè)置篩選項(xiàng)目有幾個可以注意一下:1.DatabaxseName 同于你要監(jiān)測的數(shù)據(jù)庫名(不過這個好像不起作用我的電腦上設(shè)置無效)2.DatabaxseID 同于你要檢測的數(shù)據(jù)庫的dbid可以用 select db_id(N你要監(jiān)測的庫名)得到dbid3.obxjectName 同于你要監(jiān)測的對象名例如表名視圖名等4.obxjectID 同于你要監(jiān)測的對象的id可以用 select obxject_id(N你要監(jiān)測的對象名)得到id5.Error 同于錯誤如果經(jīng)常出現(xiàn)某個編號的錯誤則針對此錯誤號6.Seccess 同于0失敗1成功如果是排錯就過濾掉成功的處理*/*方法三:*/-如果直接查詢可以參考我的這段代碼:if exists (select * from dbo.sysobxjects where id = obxject_id(Ndbo.p_search) and obxjectPROPERTY(id NIsProcedure) = 1)drop procedure dbo.p_searchGO/*-搜索某個字符串在那個表的那個字段中-鄒建 2004.10(引用請保留此信息)-*/*-調(diào)用示例use pubsexec p_search Nl-*/create proc p_searchstr Nvarchar(1000) -要搜索的字符串a(chǎn)sif str is null returndeclare s Nvarchar(4000)create table #t(表名 sysname字段名 sysname)declare tb cursor local forselect s=if exists(select 1 from +replace()+like N%+str+%)print 所在的表及字段: ++.++from syscolumns a join sysobxjects b on a.id=b.idwhere b.xtype=U and a.status=0and a.xtype in(1752399935231167)open tbfetch next from tb into swhile fetch_status=0begin where ++exec(s)fetch next from tb into sendclose tbdeallocate tbgo- 通過SQL語句來更改用戶的密碼/*修改別人的需要sysadmin role */EXEC sp_password NULL newpassword User/*如果帳號為SA執(zhí)行*/EXEC sp_password NULL newpassword sa- 通怎么判斷出一個表的哪些字段不允許為空?select COLUMN_NAME from INFORMATION_SCHEMA.COLUMNS where IS_NULLABLE=NO and TABLE_NAME=ua_account- 如何在數(shù)據(jù)庫里找到含有相同字段的表?- a. 查已知列名的情況SELECT as TableN as columnnameFrom syscolumns a INNER JOIN sysobxjects bON a.id=b.idAND b.type=UAND =cacc_id -本例如:cacc_id列- b. 未知列名查所有在不同表出現(xiàn)過的列名Select As As columnnameFrom syscolumns s1 sysobxjects oWhere s1.id = o.idAnd o.type = UAnd Exists (Select 1 From syscolumns s2Where = And s1.id s2.id)- 查詢第xxx行數(shù)據(jù)- 假設(shè)id是主鍵:select *from (select top xxx * from yourtable) aawhere not exists(select 1 from (select top xxx-1 * from yourtable) bb where aa.id=bb.id)- 如果使用游標(biāo)也是可以的fetch absolute number from cursor_name- 行數(shù)為絕對行數(shù)- SQL Server日期計(jì)算/*a. 一個月的第一天*/SELECT DATEADD(mm DATEDIFF(mm0getdate() 0)/*b. 本周的星期一*/SELECT DATEADD(wk DATEDIFF(wk0getdate() 0)/*c. 一年的第一天*/SELECT DATEADD(yy DATEDIFF(yy0getdate() 0)/*d. 季度的第一天*/SELECT DATEADD(qq DATEDIFF(qq0getdate() 0)/*e. 上個月的最后一天 */SELECT dateadd(ms-3DATEADD(mm DATEDIFF(mm0getdate() 0)/*f. 去年的最后一天*/SELECT dateadd(ms-3DATEADD(yy DATEDIFF(yy0getdate() 0)/*g. 本月的最后一天*/SELECT dateadd(ms-3DATEADD(mm DATEDIFF(m0getdate()+1 0)/*h. 本月的第一個星期一*/select DATEADD(wk DATEDIFF(wk0 dateadd(dd6-datepart(daygetdate()getdate() 0)/*i. 本年的最后一天*/SELECT dateadd(ms-3DATEADD(yy DATEDIFF(yy0getdate()+1 0)1.顯示本月第一天SELECT DATEADD(mmDATEDIFF(mm0getdate()0)select convert(datetimeconvert(varchar(8)getdate()120)+01120)2.顯示本月最后一天select dateadd(day-1convert(datetimeconvert(varchar(8)dateadd(month1getdate()120)+01120) SELECT dateadd(ms-3DATEADD(mmDATEDIFF(m0getdate()+10)3.上個月的最后一天SELECT dateadd(ms-3DATEADD(mmDATEDIFF(mm0getdate()0)4.本月的第一個星期一select DATEADD(wkDATEDIFF(wk0 dateadd(dd6-datepart(daygetdate()getdate()0)5.本年的第一天SELECT DATEADD(yyDATEDIFF(yy0getdate()0)6.本年的最后一天SELECT dateadd(ms-3DATEADD(yyDATEDIFF(yy0getdate()+10)7.去年的最后一天SELECT dateadd(ms-3DATEADD(yyDATEDIFF(yy0getdate()0)8.本季度的第一天SELECT DATEADD(qqDATEDIFF(qq0getdate()0)9.本周的星期一SELECT DATEADD(wkDATEDIFF(wk0getdate()0)10.查詢本月的記錄select * from tableName where DATEPART(mm theDate) = DATEPART(mm GETDATE() and DATEPART(yy theDate) = DATEPART(yy GETDATE()11.查詢本周的記錄select * from tableName where DATEPART(wk theDate) = DATEPART(wk GETDATE() and DATEPART(yy theDate) = DATEPART(yy GETDATE()12.查詢本季的記錄select * from tableName where DATEPART(qq theDate) = DATEPART(qq GETDATE() and DATEPART(yy theDate) = DATEPART(yy GETDATE()其中:GETDATE()是獲得系統(tǒng)時間的函數(shù)。13.獲取當(dāng)月總天數(shù):select DATEDIFF(ddgetdate()DATEADD(mm 1 getdate()select datediff(daydateadd(mm datediff(mmgetdate() )dateadd(mm datediff(mmgetdate() 1900-02-01)14.獲取當(dāng)前為星期幾DATENAME(weekday getdate()-/*查詢數(shù)據(jù)庫的所有用戶表*/use ufdata_002_2008select name from sysobxjects where type=U-查看數(shù)據(jù)庫中所有的觸發(fā)器use ufdata_002_2008goselect * from sysobxjects where xtype=TR-查詢特定數(shù)據(jù)庫中某一不知?dú)w屬表的觸發(fā)器/*查詢某一個觸發(fā)器TR_Ap_CloseBills所歸屬的表*/use ufdata_002_2008declare parent_obj_id int -定義父對象id變量-先找出父對象(所在表)的id(在觸發(fā)器不重復(fù)歸屬于多個表的情況下)select parent_obj_id=parent_objfrom sysobxjects where name=TR_Ap_CloseBillsand xtype=TRprint 所在父對象(表)的ID是:+str(parent_obj_id)-接下來找出父對象(表)的名稱select name as 觸發(fā)器所在表為from sysobxjects where type=U and id=parent_obj_id-查看觸發(fā)器內(nèi)容use ufdata_002_2008goexec sp_helptext TR_Ap_CloseBills-用于查看觸發(fā)器的屬性(參數(shù)指定觸發(fā)器所在的表)use ufdata_002_2008goexec sp_helptrigger Ap_CloseBills-創(chuàng)建觸發(fā)器/*(1)創(chuàng)建一個簡單的觸發(fā)器觸發(fā)器是一種特殊的存儲過程,類似于事件函數(shù),SQL Server? 允許為INSERT、UPDATE、DELETE 創(chuàng)建觸發(fā)器,即當(dāng)在表中插入、更新、刪除記錄時,觸發(fā)一個或一系列 T-SQL語句。觸發(fā)器可以在查詢分析器里創(chuàng)建,也可以在表名上點(diǎn)右鍵-“所有任務(wù)”-“管理觸發(fā)器”來創(chuàng)建,不過都是要寫 T-SQL 語句的,只是在查詢分析器里要先確定當(dāng)前操作的數(shù)據(jù)庫。 創(chuàng)建觸發(fā)器用 CREATE TRIGGER格式如下:-CREATE TRIGGER 觸發(fā)器名稱ON 表名FOR INSERT、UPDATE 或 DELETEAST-SQL 語句-注意:觸發(fā)器名稱是不加引號的。*/-如下是聯(lián)機(jī)叢書上的一個示例,當(dāng)在 tixtles 表上更改記錄時,發(fā)送郵件通知 MaryM。 CREATE TRIGGER reminderON tixtlesFOR INSERT UPDATE DELETEASEXEC master.xp_sendmail MaryMDont forget to print a report for the distributors./*(2)刪除觸發(fā)器用查詢分析器刪除在查詢分析器中使用 drop trigger 觸發(fā)器名稱 來刪除觸發(fā)器。也可以同時刪除多個觸發(fā)器:drop trigger 觸發(fā)器名稱觸發(fā)器名稱.注意:觸發(fā)器名稱是不加引號的。在刪除觸發(fā)器之前可以先看一下觸發(fā)器是否存在: 格式如下:-if Exists(select name from sysobxjectswhere name=觸發(fā)器名稱 and xtype=TR)-用企業(yè)管理器刪除在企業(yè)管理器中,在表上點(diǎn)右鍵-“所有任務(wù)”-“管理觸發(fā)器”,選中所要刪除的觸發(fā)器,然后點(diǎn)擊“刪除”。*/*(3)重命名觸發(fā)器用查詢分析器重命名exec sp_rename 原名稱新名稱sp_rename 是 SQL Server? 自帶的一個存儲過程,用于更改當(dāng)前數(shù)據(jù)庫中用戶創(chuàng)建的對象的名稱,如表名、列表、索引名等。用企業(yè)管理器重命名在表上點(diǎn)右鍵-“所有任務(wù)”-“管理觸發(fā)器”,選中所要重命名的觸發(fā)器,修改觸發(fā)器語句中的觸發(fā)器名稱,點(diǎn)擊“確定”。*/*(4)更多功能INSTEAD OF 子句執(zhí)行觸發(fā)器語句,但不執(zhí)行觸發(fā)觸發(fā)器的 SQL 語句,比如試圖刪除一條記錄時,將執(zhí)行觸發(fā)器指定的語句,此時不再執(zhí)行 delete 語句。例:-create trigger fon tblinstead of deleteasinsert into Logs.-IF UPDATE(列名) 子句檢查是否更新了某一列,用于 insert 或 update,不能用于 delete。例:-create trigger fon tblfor updateasif update(status) or update(tixtle)sql_statement -更新了 status 或 tixtle 列-inserted、deleted(兩個虛擬表的使用)這是兩個虛擬表,inserted 保存的是 insert 或 update 之后所影響的記錄形成的表,deleted 保存的是 delete 或 update 之前所影響的記錄形成的表。例:-create trigger tbl_deleteon tblfor deleteasdeclare tixtle varchar(200)select tixtle=tixtle from deletedinsert into Logs(logContent) values(刪除了 tixtle 為: + tixtle + 的記錄)-說明:如果向 inserted 或 deleted 虛擬表中取字段類型為 text、image 的字段值時,所取得的值將會是 null。*/*(5)遞歸、嵌套觸發(fā)器遞歸分兩種,間接遞歸和直接遞歸。我們舉例解釋如下,假如有表1、表2名稱分別為 T1、T2,在T1、T2 上分別有觸發(fā)器 G1、G2。? 間接遞歸:對 T1 操作從而觸發(fā) G1,G1 對 T2 操作從而觸發(fā) G2,G2 對 T1 操作從而再次觸發(fā) G1.? 直接遞歸:對 T1 操作從而觸發(fā) G1,G1 對 T1 操作從而再次觸發(fā) G1.-嵌套觸發(fā)器類似于間接遞歸,間接遞歸必然要形成一個環(huán),而嵌套觸發(fā)器不一定要形成一個環(huán),它可以 T1-T2-T3.這樣一直觸發(fā)下去,最多允許嵌套 32 層。-設(shè)置直接遞歸默認(rèn)情況下是禁止直接遞歸的,要設(shè)置為允許有兩種方法:? T-SQL:exec sp_dboption dbName recursive triggers true? EM:數(shù)據(jù)庫上點(diǎn)右鍵-屬性-選項(xiàng)。-設(shè)置間接遞歸、嵌套默認(rèn)情況下是允許間接遞歸、嵌套的,要設(shè)置為禁止有兩種方法:? T-SQL:exec sp_configure nested triggers 0 -第二個參數(shù)為 1 則為允許? EM:注冊上點(diǎn)右鍵-屬性-服務(wù)器設(shè)置。*/*(6)觸發(fā)器回滾我們看到許多注冊系統(tǒng)在注冊后都不能更改用戶名,但這多半是由應(yīng)用程序決定的, 如果直接打開數(shù)據(jù)庫表進(jìn)行更改,同樣可以更改其用戶名,在觸發(fā)器中利用回滾就可以巧妙地實(shí)現(xiàn)無法更改用戶名。語句如下:-use 數(shù)據(jù)庫名gocreate trigger tron 表名for updateasif update(userName)rollback tran-關(guān)鍵在最后兩句,其解釋為:如果更新了 userName 列,就回滾事務(wù)。*/*(7)禁用、啟用觸發(fā)器*/-禁用:alter table 表名 disable trigger 觸發(fā)器名稱-啟用:alter table 表名 enable trigger 觸發(fā)器名稱/*如果有多個觸發(fā)器,則各個觸發(fā)器名稱之間用英文逗號隔開。如果把“觸發(fā)器名稱”換成“ALL”,則表示禁用或啟用該表的全部觸發(fā)器。*/用友維護(hù)人員常用SQL語句(中)-SQL Server 數(shù)據(jù)庫管理常用的SQL和T-SQL-1. 查看數(shù)據(jù)庫的版本select version-2. 查看數(shù)據(jù)庫所在機(jī)器操作系統(tǒng)參數(shù)exec master.xp_msver-3. 查看數(shù)據(jù)庫啟動的參數(shù)sp_configure-4. 查看數(shù)據(jù)庫啟動時間select convert(varchar(30)login_time120) from master.sysprocesses where spid=1/*查看數(shù)據(jù)庫服務(wù)器名和實(shí)例名 */print Server Name.: + convert(varchar(30)SERVERNAME) print Instance.: + convert(varchar(30)SERVICENAME) -5. 查看所有數(shù)據(jù)庫名稱及大小sp_helpdb/*查看某個特定數(shù)據(jù)庫的名稱及大小及存儲位置*/exec sp_helpdb UFDATA_002_2008/*重命名數(shù)據(jù)庫用的SQL */sp_renamedb old_dbname new_dbname-6. 查看所有數(shù)據(jù)庫用戶登錄信息sp_helplogins/*查看所有數(shù)據(jù)庫用戶所屬的角色信息 */sp_helpsrvrolemember/*修復(fù)遷移服務(wù)器時孤立用戶時可以用的fix_orphan_user腳本或者LoneUser過程 */*更改某個數(shù)據(jù)對象的用戶屬主 */sp_changeobxjectowner obxjectname = obxject newowner = owner/*注意: 更改對象名的任一部分都可能破壞腳本和存儲過程。把一臺服務(wù)器上的數(shù)據(jù)庫用戶登錄信息備份出來可以用add_login_to_aserver腳本 */-7. 查看鏈接服務(wù)器sp_helplixnkedsrvlogin/*查看遠(yuǎn)端數(shù)據(jù)庫用戶登錄信息 */sp_helpremotelogin-8.查看某數(shù)據(jù)庫下某個數(shù)據(jù)對象的大小sp_spaceused objname/*還可以用sp_toptables過程看最大的N(默認(rèn)為50)個表 */*查看某數(shù)據(jù)庫下某個數(shù)據(jù)對象的索引信息 */sp_helpindex objname/*還可以用SP_NChelpindex過程查看更詳細(xì)的索引情況 */SP_NChelpindex objname/*clustered索引是把記錄按物理順序排列的,索引占的空間比較少。對鍵值DML操作十分頻繁的表我建議用非clustered索引和約束,fillfactor參數(shù)都用默認(rèn)值。*/*查看某數(shù)據(jù)庫下某個數(shù)據(jù)對象的的約束信息 */sp_helpconstraint objname-9.查看數(shù)據(jù)庫里所有的存儲過程和函數(shù)use databaxse_namesp_stored_procedures/*查看存儲過程和函數(shù)的源代碼 */sp_helptext procedure_name/*查看包含某個字符串str的數(shù)據(jù)對象名稱 */select distinct obxject_name(id) from syscomments where text like %str%/*創(chuàng)建加密的存儲過程或函數(shù)在AS前面加WITH ENCRYPTION參數(shù)解密加密過的存儲過程和函數(shù)可以用sp_decrypt過程 */-10.查看數(shù)據(jù)庫里用戶和進(jìn)程的信息sp_who/*查看SQL Server數(shù)據(jù)庫里的活動用戶和進(jìn)程的信息 */sp_who active/*查看SQL Server數(shù)據(jù)庫里的鎖的情況 */sp_lock/*進(jìn)程號1-50是SQL Server系統(tǒng)內(nèi)部用的進(jìn)程號大于50的才是用戶的連接進(jìn)程. spid是進(jìn)程編號dbid是數(shù)據(jù)庫編號objid是數(shù)據(jù)對象編號*/*查看進(jìn)程正在執(zhí)行的SQL語句 */dbcc inputbuffer ()-11.收縮數(shù)據(jù)庫日志文件的方法/*收縮簡單恢復(fù)模式數(shù)據(jù)庫日志,收縮后databaxse_name_log的大小單位為M */ backup log databaxse_name with no_logdbcc shrinkfile (databaxse_name_log 5)-12.分析SQL Server SQL 語句的方法:set statistics time on | offset statistics io on | off/*圖形方式顯示查詢執(zhí)行計(jì)劃在查詢分析器-查詢-顯示估計(jì)的評估計(jì)劃(D)-Ctrl-L 或者點(diǎn)擊工具欄里的圖形文本方式顯示查詢執(zhí)行計(jì)劃*/set showplan_all on | offset showplan_text on | off set statistics profile on | off -13.出現(xiàn)不一致錯誤時,NT事件查看器里出3624號錯誤,修復(fù)數(shù)據(jù)庫的方法/*先注釋掉應(yīng)用程序里引用的出現(xiàn)不一致性錯誤的表,然后在備份或其它機(jī)器上先恢復(fù)然后做修復(fù)操作 */alter databaxse error_databaxse_name set single_user/*修復(fù)出現(xiàn)不一致錯誤的表 */dbcc checktable(error_table_namerepair_allow_data_loss)/*或者可惜選擇修復(fù)出現(xiàn)不一致錯誤的小型數(shù)據(jù)庫名 */dbcc checkdb(error_databaxse_namerepair_allow_data_loss)alter databaxse error_databaxse_name set multi_user/*CHECKDB 有3個參數(shù):? repair_allow_data_loss 包括對行和頁進(jìn)行分配和取消分配以改正分配錯誤、結(jié)構(gòu)行或頁的錯誤,以及刪除已損壞的文本對象,這些修復(fù)可能會導(dǎo)致一些數(shù)據(jù)丟失。修復(fù)操作可以在用戶事務(wù)下完成以允許用戶回滾所做的更改。如果回滾修復(fù),則數(shù)據(jù)庫仍會含有錯誤,應(yīng)該從備份進(jìn)行恢復(fù)。如果由于所提供修復(fù)等級的緣故遺漏某個錯誤的修復(fù),則將遺漏任何取決于該修復(fù)的修復(fù)。修復(fù)完成后,請備份數(shù)據(jù)庫。? repair_fast 進(jìn)行小的、不耗時的修復(fù)操作,如修復(fù)非聚集索引中的附加鍵。 這些修復(fù)可以很快完成,并且不會有丟失數(shù)據(jù)的危險(xiǎn)。? repair_rebuild 執(zhí)行由 repair_fast 完成的所有修復(fù),包括需要較長時間的修復(fù)(如重建索引)。執(zhí)行這些修復(fù)時不會有丟失數(shù)據(jù)的危險(xiǎn)。*/-字符串截取實(shí)例1.截取已知長度的函數(shù)A.截取從字符串左邊開始N個字符Declare S1 varchar(100)Select S1=Select Left(S14)-顯示結(jié)果: httpB.截取從字符串右邊開始N個字符(例如取字符)Declare S1 varchar(100)Select S1=Select right(S111)-顯示結(jié)果: C.截取字符串中任意位置及長度(例如取字符www)Declare S1 varchar(100)Select S1=Select SUBSTRING(S183)-顯示結(jié)果: www以上例子皆是已知截取位置及長度下面介紹未知位置的例子2.截取未知位置的函數(shù)A.截取指定字符串后的字符串(例如截取http:/后面的字符串)方法一:Declare S1 varchar(100)Select S1=Select Substring(S1CHARINDEX(wwwS1)+1Len(S1)/*此處也可以這樣寫:Select Substring(S1CHARINDEX(/S1)+2Len(S1)*/ -顯示結(jié)果: 需要注意:CHARINDEX函數(shù)搜索字符串時不區(qū)分大小寫因此CHARINDEX(wwwS1)也可以寫成CHARINDEX(WWWS1)方法二與方法一類似)Declare S1 varchar(100)Select S1=Select Substring(S1PATINDEX(%www%S1)+1Len(S1)-此處也可以這樣寫:Select Substring(S1PATINDEX(%/%S1)+2Len(S1) -顯示結(jié)果: 函數(shù)PATINDEX與CHARINDEX區(qū)別在于:前者可以參數(shù)一些參數(shù)增加查詢的功能 方法三:Declare S1 varchar(100)Select S1=Select REPLACE(S1http:/)-顯示結(jié)果: 利用字符替換函數(shù)REPLACE將除需要顯示字符串外的字符替換為空方法四:Declare S1 varchar(100)Select S1=Select STUFF(S1CHARINDEX(http:/S1)Len(http:/)-顯示結(jié)果: 函數(shù)STUFF與REPLACE區(qū)別在于:前者可以指定替換范圍而后者則是全部范圍內(nèi)替換B.截取指定字符后的字符串(例如截取C:Windowstest.txt中文件名)與A不同的是當(dāng)搜索對象不是一個時利用上面的方法只能搜索到第一個位置方法一:Declare S1 varchar(100)Select S1=C:Windowstest.txtselect right(S1charindex(REVERSE(S1)-1)用友維護(hù)人員常用SQL語句 (下)數(shù)據(jù)庫加密:select encrypt(原始密碼) select pwdencrypt(原始密碼)select pwdcompare(原始密碼,加密后密碼) = 1-相同;否則不相同 encrypt(原始密碼) select pwdencrypt(原始密碼)select pwdcompare(原始密碼,加密后密碼) = 1-相同;否則不相同-取回表中字段:declare list varchar(1000),sql nvarchar(1000)select list=list+,+ from sysobjects a,syscolumns b where a.id=b.id and =表Aset sql=select +right(list,len(list)-1)+ from 表Aexec (sql) -查看硬盤分區(qū):EXEC master.xp_fixeddrives-比較A,B表是否相等:if (select checksum_agg

溫馨提示

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

評論

0/150

提交評論