隨筆:19 文章:2 評(píng)論:6 引用:0
          BlogJava 首頁 發(fā)新隨筆
          發(fā)新文章 聯(lián)系 聚合管理

          2006年5月23日

          我個(gè)人憑借自己的眼光和技術(shù),創(chuàng)作了一個(gè)有潛在商業(yè)價(jià)值的網(wǎng)站,中國IDC資源導(dǎo)航,當(dāng)然名稱雖然是導(dǎo)
          航,但我的想法是作成國內(nèi)IDC行業(yè)的資源整合,主要內(nèi)容包括IDC導(dǎo)航站、商務(wù)站、資訊站、論壇四個(gè)版
          塊。

          導(dǎo)航站:是收集互聯(lián)網(wǎng)資源,為客戶導(dǎo)航;
          商務(wù)站:是整合國內(nèi)現(xiàn)有運(yùn)營商,讓運(yùn)營商在此建立自己的信息平臺(tái)。目標(biāo)是形成國際IDC商務(wù)站;
          資訊站:是國內(nèi)外有關(guān)IDC的新聞資訊、技術(shù)信息;

          我現(xiàn)在是一個(gè)人在作,目前版本是1。0只有導(dǎo)航站。2。0正在全面開發(fā)之中,增加商務(wù)站。生成Html頁,利
          于搜索引擎的收錄。目前使用技術(shù)是asp+sql2000,但準(zhǔn)備在4。0時(shí)有可能全面改版,使用技術(shù)Jsp+MySql。

          目前的問題,個(gè)人精力有限,開發(fā)速度慢,思維有限,希望業(yè)界精英提供好的建議,歡迎懂技術(shù)的精英加
          入。現(xiàn)在純屬開發(fā)階段,但可以承諾,如果項(xiàng)目有發(fā)展,可以分得相應(yīng)股份。

          QQ:316156915
          Msn:yan65919@hotmail.com
          E-mail:yan65919@gmail.com

          目前可以看到的痕跡:www.idcdh.com
          posted @ 2006-10-24 11:33 yanzhicun 閱讀(401) | 評(píng)論 (1)編輯 收藏
           
          今天“百年不遇”的停電了,看了一天書。晚上搞了一下全文索引,決定把心得貼出來,我盡量寫的詳細(xì),大家共同學(xué)習(xí),歡迎指正!
            
            1、啟動(dòng) Microsoft Search 服務(wù)
            
              開疾說?->SQL程序組-->服務(wù)管理器-->下拉筐-->Microsoft Search 服務(wù)-->啟動(dòng)它
            
            2、
             ..\Microsoft SQL Server\MSSQL\FTDATA\SQLServer\Config\目錄里建一個(gè)非空noise.chs文件
             非空noise.chs文件,也有人說是空的noise.chs文件,但我每次都往里寫幾個(gè)沒用的字母。
            
            3、建立環(huán)境
            
              打開查詢分析器-->執(zhí)行下列腳本:
            --------------------------------------------
            create database test ---創(chuàng)建test數(shù)據(jù)庫
            use test       ---選擇test數(shù)據(jù)庫
            create table dali (ID int not null primary key,MyImage image,FileType varchar(255),FileNmae varchar(255)) ---創(chuàng)建dali表
            --dali表中 Id,MyImage,FileType 三列是必須的,因?yàn)橐獙?duì)image列索引的話,必須要有一個(gè)主鍵列,一個(gè)image列,一個(gè)存放文件類型的列
            --我們知道在windows系統(tǒng)中文件類型是靠擴(kuò)展名來區(qū)分的所以FileType列也就是用來放 文件的擴(kuò)展名
            --------------------------------------------
            
            sp_fulltext_database 'enable' --為全文索引啟用數(shù)據(jù)庫
            sp_fulltext_catalog 'My_FullDir', 'create' ---創(chuàng)建一個(gè)叫My_FullDif的全文目錄
            
            declare @Key sysname ; select @Key=c.name from syscolumns a,sysconstraints b,sysobjects c where a.id=object_id('a') and a.name='a' and a.id=b.id and b.constid=c.id and c.name like 'PK%'
            exec sp_fulltext_table 'dali','create','My_FullDir',@Key ----這兩句是為全文索引,對(duì)表進(jìn)行標(biāo)記
            
            sp_fulltext_column 'dali','MyImage','add',0x0804,'FileType' ---這句是指定MyImage列為全文索引列,FileType是類型列
            ------------------------------------------------
            4、在c盤下放一個(gè)擴(kuò)展名為doc的word文件,一個(gè)擴(kuò)展名為xls的excel文件,一個(gè)擴(kuò)展名為htm的網(wǎng)頁文件,個(gè)擴(kuò)展名為bmp的圖片共4個(gè),大家可根據(jù)實(shí)際情況放入!
            
            5、插入數(shù)據(jù)
            
             建立下面這個(gè)存儲(chǔ)過程
            --------------------------------------------------
            CREATE PROCEDURE sp_textcopy
             @srvname  varchar (30),
             @login   varchar (30),
             @password  varchar (30),
             @dbname   varchar (30),
             @tbname   varchar (30),
             @colname  varchar (30),
             @filename  varchar (30),
             @whereclause varchar (40),
             @direction char(1)
            AS
            /* 這是使用textcopy工具將文件插入到數(shù)據(jù)庫中,如果有前臺(tái)工具可以用前臺(tái)開發(fā)工具將文件插入,這里為了演示 */
            DECLARE @exec_str varchar (255)
            SELECT @exec_str='textcopy /S ' @srvname ' /U ' @login ' /P ' @password ' /D ' @dbname ' /T' @tbname ' /C ' @colname ' /W"' @whereclause '" /F"' @filename '" /' @direction
            EXEC master..xp_cmdshell @exec_str
            ----------------------------------------------------
            
            insert dali values(1,0x,'doc','大力的doc') ---其中第二列是 0x 它是一個(gè)16進(jìn)制數(shù)對(duì)應(yīng)image列,是必須的,不要寫null,第三列是文件類型,既擴(kuò)展名
            
            sp_textcopy '你的服務(wù)器名','sa','你的密碼','test','dali','MyImage','c:\大力的doc.doc','where ID=1','I'
            -------依次參數(shù)是:實(shí)例名,用戶名,密碼,數(shù)據(jù)庫名,表名,image列名,路徑及文件名,條件(你必須保證它只選擇一行),I
            ---------------------------------------------------------------------------------------------------------------------
            insert dali values(2,0x,'bmp','圖片')
            sp_textcopy '你的服務(wù)器名','sa','你的密碼','test','dali','MyImage','c:\圖片.bmp','where ID=2','I' --注意條件是 ID=2
            
            insert dali values(3,0x,'xls','Excel文件')
            sp_textcopy '你的服務(wù)器名','sa','你的密碼','test','dali','MyImage','c:\Excel文件.xls','where ID=3','I' --注意條件是 ID=3
            
            insert dali values(4,0x,'htm','網(wǎng)頁')
            sp_textcopy '你的服務(wù)器名','sa','你的密碼','test','dali','MyImage','c:\網(wǎng)頁.htm','where ID=4','I' --注意條件是 ID=4
            
            ----------上面的語句,要保證類型一樣,路徑正確,條件唯一正確應(yīng)該就可以了
            
            6、填充全文索引
            
            sp_fulltext_table 'dali','start_full' ---第一個(gè)參數(shù)是表名,第二個(gè)參數(shù)是啟動(dòng)表的全文索引的完全填充
            
            7、可以開始你的實(shí)驗(yàn)了
            
            select * from dali where contains(MyImage,'J老師')
            
            select * from dali where contains(MyImage,'海老師')
            
            ------END----------
            --調(diào)試環(huán)境:SQLServer2K、Windows2Kas
          posted @ 2006-07-12 12:00 yanzhicun 閱讀(619) | 評(píng)論 (0)編輯 收藏
           

          在SQL 企業(yè)管理器上操作步驟:

          一:進(jìn)入企業(yè)管理器,打開支持服務(wù),選取全文檢索,點(diǎn)擊啟動(dòng)。

           

          二:對(duì)相關(guān)的數(shù)據(jù)表建立全文索引。

          三:全文索引建立向?qū)?/font>

           

           

           

          然后確定提交后,建立向?qū)Ь突就瓿伞?/p>

          到這里在SQL上建立全文索引已經(jīng)完成!

          四:補(bǔ)充:由于全文填充是按照調(diào)度里設(shè)定周期進(jìn)行的,所以不會(huì)馬上生效,如果需要的話可以點(diǎn)擊全目錄,運(yùn)行填充。通常數(shù)據(jù)量大的話不建議在訪問量大的時(shí)候進(jìn)行。

           

          解決在全文搜索中搜索中文字符出錯(cuò)補(bǔ)丁:點(diǎn)擊下載

          解決中文字符出錯(cuò)問題:

          方法一:
          把下載解壓的文件復(fù)制到...\Microsoft SQL Server\MSSQL\FTDATA\SQLServer\Config\
          目錄下(該路徑為全文目錄路徑,可以全文目錄屬性中查看)

          方法二:
          編輯...\Microsoft SQL Server\MSSQL\FTDATA\SQLServer\Config\目錄下的
          noise.chs文件,清空文檔,輸入‘@’(其他的偏僻符號(hào)也可以)


          最后,重新進(jìn)行全文完全填充!

          posted @ 2006-07-12 11:44 yanzhicun 閱讀(372) | 評(píng)論 (0)編輯 收藏
           

          引言

          微軟的SQL Server數(shù)據(jù)庫是一個(gè)在中低端企業(yè)應(yīng)用中占有廣泛市場的關(guān)系型數(shù)據(jù)庫系統(tǒng),它以簡單、方便、易用等特性深得眾多軟件開發(fā)人員和數(shù)據(jù)庫管理人員的鐘愛。但SQL Server 7.0以前的數(shù)據(jù)庫系統(tǒng)由于沒有全文檢索功能,致使無法提供像文本內(nèi)容查找此類的服務(wù),成為一個(gè)小小的遺憾。從SQL Server 7.0起,到如今的SQL Server 2000終于具備了全文檢索功能,使用戶可以高效地檢索存儲(chǔ)在數(shù)據(jù)庫char、varchar、text、ntext、nchar、nvarchar等數(shù)據(jù)類型列中的文本數(shù)據(jù)。

          建立全文索引

          在進(jìn)行全文檢索之前,必須先建立和填充數(shù)據(jù)庫全文索引。為了支持全文索引操作,SQL Server 7.0新增了一些存儲(chǔ)過程和Transact-SQL語句。使用這些存儲(chǔ)過程創(chuàng)建全文索引的具體步驟如下(括號(hào)內(nèi)為調(diào)用的存儲(chǔ)過程名稱):

          1. 啟動(dòng)數(shù)據(jù)庫的全文處理功能(sp_fulltext_

          database);;

          2. 建立全文檢索目錄(sp_fulltext_catalog);

          3.在全文檢索目錄中注冊(cè)需要全文索引的表(sp_fulltext_table);

          4. 指出表中需要全文檢索的列名(sp_fulltext_

          column);;

          5. 為表創(chuàng)建全文索引(sp_fulltext_table);;

          6. 填充全文檢索目錄(sp_fulltext_catalog)。

          下面舉例說明如何創(chuàng)建全文索引,在本例中,對(duì)Test數(shù)據(jù)庫Book表中Title列和Notes列建立全文索引。

          use test //打開數(shù)據(jù)庫

          //打開全文索引支持,啟動(dòng)SQL Server的全文搜索服務(wù)

          execute sp_fulltext_database ‘enable’

          //建立全文檢索目錄ft_test

          execute sp_fulltext_catalog ‘ft_test’, ‘create’

          為Title列建立全文索引數(shù)據(jù)元,pk_title為Book表中由主鍵所建立的唯一索引,這個(gè)參數(shù)是必需的。

          execute sp_fulltext_table ‘book’,‘create’, ‘ft_test’,‘pk_title’

          //設(shè)置全文索引列名

          execute sp_fulltext_column ‘book’, ‘title’, ‘a(chǎn)dd’

          execute sp_fulltext_column ‘book’,‘notes’, ‘a(chǎn)dd’

          //建立全文索引

          execute sp_fulltext_table ‘book’, ‘a(chǎn)ctivate’

          //填充全文索引目錄

          execute sp_fulltext_catalog ‘ft_test’, ‘start_full’

          至此,全文索引建立完畢。

          進(jìn)行全文檢索

          SQL Server 2000提供的全文檢索語句主要有CONTAINS和FREETEXT。CONTAINS語句的功能是在表的所有列或指定列中搜索:一個(gè)字或短語;一個(gè)字或短語的前綴;與一個(gè)字相近的另一個(gè)字;一個(gè)字的派生字;一個(gè)重復(fù)出現(xiàn)的字。

          CONTAINS語句的語法格式為:

          CONTAINS({column | *}), <contains_search

          _condition>)

          其中,column是搜索列,使用“*”時(shí)說明對(duì)表中所有全文索引列進(jìn)行搜索。Contains_search_

          condition 說明CONTAINS語句的搜索內(nèi)容,其語法格式為:

          {<simple_term>|<prefix_term>|<proximity_term>|<generation_term>|<weighted_term>}[{{AND|AND NOT|OR}<contains_search_condition>}] [...n]

          下面就simple_term和prefix_term參數(shù)做簡要說明:

          simple_term是CONTAINS語句所搜索的單字或短語,當(dāng)搜索的是一個(gè)短語時(shí),必須使用雙引號(hào)作為定界符。其格式為:

          {‘word’|“ phrase”}

          prefix_term說明CONTAINS語句所搜索的字或短語前綴,其格式為:

          {“word*” | “phrase*”}

          例如,下面語句檢索Book表的Title列和Notes列中包含“database”或“computer”字符串的圖書名稱及其注釋信息:

          select title, notes

          from book

          where contains(tilte, ‘database’) or contains(notes,‘database’)

          or contains(title,‘computer’) or contains(notes,‘computer’)

          FREETEXT語句的功能是在一個(gè)表的所有列或指定列中搜索一個(gè)自由文本格式的字符串,并返回與該字符串匹配的數(shù)據(jù)行。所以,F(xiàn)REETEXT語句所執(zhí)行的功能又稱做自由式全文查詢。

          FREETEXT語句的語法格式為:FREETEXT({column | * },‘freetext_string’)

          其中,column是被搜索列,使用“*”時(shí)說明對(duì)表中的所有全文索引列進(jìn)行搜索。Freetext_string參數(shù)指出所搜索的自由文本格式字符串。

          例如,下面語句使用FREETEXT語句搜索Book表中包含“Successful Life”字符串的數(shù)據(jù)行:

          select title, notes

          from book

          where freetext(*,‘Successful Life’)

          posted @ 2006-07-12 11:42 yanzhicun 閱讀(456) | 評(píng)論 (0)編輯 收藏
           
          使用SQL?SERVER?2000的全文檢索功能?

           ?
          步驟:

          1、??打開NorthWind數(shù)據(jù)庫,右鍵Products表,選擇“全文索引表”,“在表上定義全文索引”,為其創(chuàng)建全文目錄。在“全文索引向?qū)А敝校x擇你需要全文查詢條件的列(可以是文本或圖像),我們選擇Productname和QuantityPerUnit列。然后下一步,輸入一個(gè)新的目錄proCatalog,點(diǎn)擊下一步。在填充調(diào)度一項(xiàng)里,我們暫時(shí)不建立填充調(diào)度。接著“下一步”,全成全文索引向?qū)АM瓿珊螅覀兛梢钥吹皆凇叭哪夸洝崩铮嗔艘粋€(gè)全文目錄proCatalog。右鍵proCatalog屬性,可以看到其狀態(tài)、表、調(diào)度情況。
          2、??右鍵全文目錄proCatalog,?“啟動(dòng)完全填充”,系統(tǒng)會(huì)出現(xiàn)“全文目錄填充成功啟動(dòng)”。
          3、??這時(shí),我們可以使用Transact-SQL進(jìn)行全文檢索了,我們使用CONTAINS、FREETEXT等謂詞。如:


          檢索ProductName中,即包含b又包含c的所有列

          SELECT?*

          FROM?Products

          WHERE?CONTAINS(ProductName,?'"c*"?and?"b*"?')

          ?

          檢索ProductName中,即包含chai?chang?tofu之一的所有列

          SELECT?*

          FROM?Products

          WHERE?FREETEXT(ProductName,?'chai?chang?tofu?')

          ?

          我們還可以使用CONTAINSTABLE、FREETEXTTABLE等

          ?

          4、??我們可以用.NET創(chuàng)建WEB或Form客戶端,提供一個(gè)良好的全文檢索界面,使自己的應(yīng)用程序得到擴(kuò)展

          ?

          ?

          ?

          參考:
          全文查詢有關(guān)的系統(tǒng)存儲(chǔ)過程

          (1)啟動(dòng)數(shù)據(jù)庫的全文處理功能(sp_fulltext_datebase);?
          (2)建立全文目錄(sp_fulltext_catalog);?
          (3)在全文目錄中注冊(cè)需要全文索引的表(sp_fulltext_table);?
          (4)指出表中需要全文檢索的列名(sp_fulltext_column)?
          (5)為表創(chuàng)建全文索引(sp_fulltext_table);?
          (6)填充全文索引(sp_fulltext_catalog)。

          ?

          ?

          ?

          全文查詢支持

          Microsoft&reg;?SQL?Server&#8482;?2000?在接收帶全文構(gòu)造的?Transact-SQL?語句時(shí),使用全文提供程序從?Microsoft?搜索服務(wù)檢索所需信息。全文構(gòu)造是?CONTAINS?或?FREETEXT?謂詞,或者是?CONTAINSTABLE?或?FREETEXTTABLE?行集函數(shù)。如果不知道包含搜索條件的列,全文構(gòu)造可以在全文索引中引用多列。該進(jìn)程的流程如下圖所示。

          ?


          這一進(jìn)程涉及的步驟包括:?

          應(yīng)用程序給?SQL?Server?實(shí)例發(fā)送帶全文構(gòu)造的?Transact-SQL?語句。

          SQL?Server?關(guān)系引擎通過查詢系統(tǒng)表驗(yàn)證全文構(gòu)造,確定全文索引是否覆蓋列引用。關(guān)系引擎將每個(gè)?SQL?語句簡化為一系列行集操作,并使用?OLE?DB?將這些操作傳遞給基礎(chǔ)組件,通常是存儲(chǔ)引擎。關(guān)系引擎通過全文提供程序而不是存儲(chǔ)引擎,將任何全文構(gòu)造轉(zhuǎn)換成對(duì)行集的請(qǐng)求。請(qǐng)求的行集是滿足搜索條件和等級(jí)的鍵集,而這個(gè)等級(jí)表示每個(gè)鍵的數(shù)據(jù)滿足搜索條件的程度。向全文提供程序發(fā)送的行集請(qǐng)求命令包括全文檢索條件。

          全文提供程序驗(yàn)證請(qǐng)求并將搜索條件更改為由Microsoft?搜索服務(wù)的查詢支持組件使用的形式。將請(qǐng)求發(fā)送到搜索服務(wù)。

          查詢支持組件使用搜索引擎組件從全文索引析取所請(qǐng)求的數(shù)據(jù)。然后以行集的形式將這些數(shù)據(jù)傳遞回全文提供程序。

          全文提供程序?qū)⑦@個(gè)行集返回給關(guān)系引擎。

          關(guān)系引擎將它從存儲(chǔ)引擎和全文提供程序收到的所有行集進(jìn)行組合,以生成發(fā)送回客戶端的最終結(jié)果集。?

          ?

          全文目錄和索引

          Microsoft&reg;?SQL?Server&#8482;?2000?全文索引為在字符串?dāng)?shù)據(jù)中進(jìn)行復(fù)雜的詞搜索提供有效支持。全文索引存儲(chǔ)關(guān)于重要詞和這些詞在特定列中的位置的信息。全文查詢利用這些信息,可快速搜索包含具體某個(gè)詞或一組詞的行。

          全文索引包含在全文目錄中。每個(gè)數(shù)據(jù)庫可以包含一個(gè)或多個(gè)全文目錄。一個(gè)目錄不能屬于多個(gè)數(shù)據(jù)庫,而每個(gè)目錄可以包含一個(gè)或多個(gè)表的全文索引。一個(gè)表只能有一個(gè)全文索引,因此每個(gè)有全文索引的表只屬于一個(gè)全文目錄。

          全文目錄和索引不存儲(chǔ)在它們所屬的數(shù)據(jù)庫中。目錄和索引由?Microsoft?搜索服務(wù)分開管理。

          全文索引必須在基表上定義,而不能在視圖、系統(tǒng)表或臨時(shí)表上定義。?全文索引的定義包括:?

          能唯一標(biāo)識(shí)表中各行的列(主鍵或候選鍵),而且不允許?NULL?值。

          索引所覆蓋的一個(gè)或多個(gè)字符串列。?

          全文索引由鍵值填充。每個(gè)鍵的項(xiàng)提供與該鍵相關(guān)聯(lián)的重要詞(干擾詞或終止詞除外)、它們所在的列和它們?cè)诹兄械奈恢玫扔嘘P(guān)信息。

          格式化文本字符串(如?Microsoft&reg;?Word&#8482;?文檔文件或?HTML?文件)不能存儲(chǔ)在字符串或?Unicode?列中,因?yàn)檫@些文件中的許多字節(jié)包含不構(gòu)成有效字符的數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)庫應(yīng)用程序可能仍需要訪問這些數(shù)據(jù)并對(duì)其應(yīng)用全文檢索。因?yàn)?image?列并不要求每一字節(jié)都構(gòu)成一個(gè)有效字符,所以許多站點(diǎn)將這類數(shù)據(jù)存儲(chǔ)在?image?列中。SQL?Server?2000?引入了對(duì)存儲(chǔ)在?image?列中的這些類型的數(shù)據(jù)執(zhí)行全文檢索的能力。SQL?Server?2000?提供篩選,可從?Microsoft?Office&#8482;?文件(.doc、.xls?和?.ppt?文件)、文本文件(.txt?文件)及?HTML?文件(.htm?文件)中析取文本化數(shù)據(jù)。設(shè)計(jì)表時(shí)除包括保存數(shù)據(jù)的?image?列外,還需包括綁定列來保存存儲(chǔ)在?image?列中的數(shù)據(jù)格式的文件擴(kuò)展名。可以創(chuàng)建引用?image?列和綁定列的全文索引,以便在存儲(chǔ)于?image?列中的文本化信息上啟用全文檢索。SQL?Server?2000?全文檢索引擎使用綁定列中的文件擴(kuò)展名信息,選擇從列中析取文本化數(shù)據(jù)的合適的篩選。

          全文索引是用于執(zhí)行兩個(gè)?Transact-SQL?謂詞的組件,以便根據(jù)全文檢索條件對(duì)行進(jìn)行測試:?

          CONTAINS

          FREETEXT?

          Transact-SQL?還包含兩個(gè)返回符合全文檢索條件的行集的函數(shù):?

          CONTAINSTABLE

          FREETEXTTABLE?

          SQL?Server?在內(nèi)部將搜索條件發(fā)送給?Microsoft?搜索服務(wù)。Microsoft?搜索服務(wù)查找所有符合全文檢索條件的鍵并將它們返回給?SQL?Server。SQL?Server?隨后使用鍵的列表來確定表中要處理的行。

          全文索引

          對(duì)?Microsoft&reg;?SQL?Server&#8482;?2000?數(shù)據(jù)的全文支持涉及兩個(gè)功能:對(duì)字符數(shù)據(jù)發(fā)出查詢的能力和創(chuàng)建及維護(hù)基礎(chǔ)索引以簡化這些查詢的能力。

          全文索引在許多地方與普通的?SQL?索引不同。

          普通?SQL?索引
          ?全文索引
          ?
          存儲(chǔ)時(shí)受定義它們所在的數(shù)據(jù)庫的控制。
          ?存儲(chǔ)在文件系統(tǒng)中,但通過數(shù)據(jù)庫管理。
          ?
          每個(gè)表允許有若干個(gè)普通索引。
          ?每個(gè)表只允許有一個(gè)全文索引。
          ?
          當(dāng)對(duì)作為其基礎(chǔ)的數(shù)據(jù)進(jìn)行插入、更新或刪除時(shí),它們自動(dòng)更新。
          ?將數(shù)據(jù)添加到全文索引稱為填充,全文索引可通過調(diào)度或特定請(qǐng)求來請(qǐng)求,也可以在添加新數(shù)據(jù)時(shí)自動(dòng)發(fā)生。
          ?
          不分組。
          ?在同一個(gè)數(shù)據(jù)庫內(nèi)分組為一個(gè)或多個(gè)全文目錄。
          ?
          使用?SQL?Server?企業(yè)管理器、向?qū)Щ?Transact-SQL?語句創(chuàng)建和除去。
          ?使用?SQL?Server?企業(yè)管理器、向?qū)Щ虼鎯?chǔ)過程創(chuàng)建、管理和除去。
          ?


          ?

          這些差異使大量管理任務(wù)變得不可缺少。全文管理是在幾個(gè)層次上實(shí)施的:?

          服務(wù)器?

          可以對(duì)服務(wù)器范圍的某些屬性(如?resource_usage)加以設(shè)置,以便增加或減少全文服務(wù)所使用的系統(tǒng)資源數(shù)量。


          說明??全文引擎作為名為?Microsoft?搜索的服務(wù)在?Microsoft?Windows?NT&reg;?Server?和?Microsoft?Windows&reg;?2000?Server?上運(yùn)行。對(duì)于?Microsoft?SQL?Server?個(gè)人版,Microsoft?搜索服務(wù)不可用。盡管這意味著?Microsoft?搜索服務(wù)既未安裝在?Microsoft?Windows?95/98?上,也未安裝在?Windows?NT?工作站或?Windows?2000?Professional?客戶端上,但這些客戶端在連接到?SQL?Server?標(biāo)準(zhǔn)版安裝或企業(yè)版實(shí)例時(shí)可以使用這項(xiàng)服務(wù)。

          數(shù)據(jù)庫?

          必須啟用數(shù)據(jù)庫才能使用全文服務(wù)。可以在已啟用的數(shù)據(jù)庫中創(chuàng)建和除去一個(gè)或多個(gè)全文目錄的元數(shù)據(jù)。

          全文目錄?

          全文目錄包含數(shù)據(jù)庫中的全文索引。每個(gè)目錄可以用于數(shù)據(jù)庫內(nèi)的一個(gè)或多個(gè)表的索引需求。該目錄中的索引是使用這里介紹的管理功能來填充的。(全文目錄必須駐留在與?SQL?Server?實(shí)例相關(guān)聯(lián)的本地硬盤驅(qū)動(dòng)器上。不支持可移動(dòng)的驅(qū)動(dòng)器、軟盤和網(wǎng)絡(luò)驅(qū)動(dòng)器)。在每個(gè)服務(wù)器上最多可創(chuàng)建?256?個(gè)全文目錄。


          說明??Windows?NT?故障轉(zhuǎn)移群集環(huán)境完全支持全文索引。有關(guān)更多信息,請(qǐng)參見在故障轉(zhuǎn)移群集中運(yùn)行全文查詢。

          表?

          首先,必須為全文支持啟用表。然后,為與該表相關(guān)聯(lián)的全文索引創(chuàng)建元數(shù)據(jù)(如表名及其全文目錄)。表啟用后,可以用為全文支持而啟用的列中的數(shù)據(jù)填充它。如果表的全文定義被更改(例如,添加一個(gè)也將為全文檢索而索引的新列),則必須重新填充相關(guān)的全文目錄以使全文索引與新的全文定義同步。

          列?

          可以從非活動(dòng)的注冊(cè)表中添加或除去支持全文查詢的列。

          在所有這些級(jí)別上,可使用工具檢索元數(shù)據(jù)和狀態(tài)信息。

          和常規(guī)?SQL?索引一樣,當(dāng)在相關(guān)表中修改數(shù)據(jù)時(shí),可自動(dòng)更新全文索引。或者,也可以適當(dāng)?shù)拈g隔手工重新填充全文索引。這種重寫可能既耗時(shí)又大量占用資源,因此,在數(shù)據(jù)庫活動(dòng)較少時(shí),這通常是在后臺(tái)運(yùn)行的異步進(jìn)程。

          應(yīng)將具有相同更新特性的表(如更改少的與更改多的,或在一天的特定時(shí)段內(nèi)頻繁更改的表)組合在一起,并分配給相同的全文目錄。通過以此方法設(shè)置全文目錄填充調(diào)度,使得全文索引和表保持同步,且在數(shù)據(jù)庫活動(dòng)較多時(shí)不對(duì)數(shù)據(jù)庫服務(wù)器的資源使用產(chǎn)生負(fù)面影響。

          為全文目錄中的表安排全文索引的位置是非常重要的。在為全文目錄指定表時(shí),應(yīng)該注意下列基本原則:?

          始終選擇可用于全文唯一鍵的最小唯一索引。(4?個(gè)字節(jié)且基于整數(shù)的索引是最佳的。)這將顯著減少文件系統(tǒng)中?Microsoft?搜索服務(wù)所需要的資源。如果主鍵很大(超過?100?字節(jié)),可以考慮選擇表中其它唯一索引(或創(chuàng)建另一個(gè)唯一索引)作為全文唯一鍵。否則,如果全文唯一鍵的大小達(dá)到允許的上限(450?字節(jié)),全文填充將無法繼續(xù)進(jìn)行。

          如果進(jìn)行索引的表有成千上萬行,請(qǐng)將該表指定給其自己的全文目錄。

          應(yīng)該考慮對(duì)其進(jìn)行全文索引的表中發(fā)生的更改數(shù)以及表的行數(shù)。如果要更改的總行數(shù),加上上次全文填充期間表中出現(xiàn)的行數(shù)達(dá)到成千上萬行,請(qǐng)將該表指定給其自己的全文目錄。?

          請(qǐng)參見

          sp_fulltext_table

          CONTAINS

          一個(gè)謂詞,用于搜索包含基于字符的數(shù)據(jù)類型的列,該列與單個(gè)詞和短語,以及與另一個(gè)詞一定范圍之內(nèi)的近似詞精確或模糊(不太精確的)匹配或者加權(quán)匹配。CONTAINS?可以搜索:?

          詞或短語。

          詞或短語的前綴。

          另一個(gè)詞附近的詞。

          由另一個(gè)詞的詞尾變化生成的詞(例如,詞?drive?是?drives、drove、driving?和?driven?詞尾變化的詞干)。

          比另一個(gè)詞具有更高加權(quán)的詞。?

          語法
          CONTAINS
          ????(?{?column?|?*?}?,?'<?contains_search_condition?>'??????

          ?

          FREETEXT

          是個(gè)謂詞,用于搜索含有基于字符的數(shù)據(jù)類型的列,其中的值符合在搜索條件中所指定文本的含義,但不符合表達(dá)方式。使用?FREETEXT?時(shí),全文查詢引擎內(nèi)部將?freetext_string?拆分為若干個(gè)搜索詞,并賦予每個(gè)詞以不同的加權(quán),然后查找匹配。

          語法

          FREETEXT?(?{?column?|?*?}?,?'freetext_string'?

          ?

          CONTAINSTABLE?和?FREETEXTTABLE?函數(shù)用來指定返回每行的相對(duì)排名的全文查詢。這兩個(gè)函數(shù)與全文謂詞?CONTAINS?和?FREETEXT?很相似,但是用法不同。

          (此文部分資料來自MSDN)
          posted @ 2006-07-12 11:39 yanzhicun 閱讀(563) | 評(píng)論 (0)編輯 收藏
           

          JavaScript實(shí)際應(yīng)用:innerHTMl和確認(rèn)提示的使用

            今天開發(fā)中涉及到對(duì)一個(gè)層的信息控制,就是控制一個(gè)層中顯示什么信息,查找資料才知道使用innerHTML屬性來控制層的值,這個(gè)innerHTML跟表單里面的value屬性有點(diǎn)類似,能夠控制層的顯示值。

            比如說我一個(gè)div層里本來沒有值,我處罰一個(gè)事件后要顯示值,那么就能夠使用innerHTML屬性了,其實(shí)innerHTML屬性除了能控制層以外,還能控制窗口內(nèi)容的所有元素,但是我沒有測試過。

          (1)對(duì)div標(biāo)簽的控制

          div標(biāo)簽跟span標(biāo)簽是不一樣的,div是一個(gè)層的塊,span是一行,我們下面看演示就知道區(qū)別了。先來看一段控制div的代碼。

          程序代碼 程序代碼
          <script language="javascript">
          function chageDiv(number)
          {
          if (number == 1) {
          document.getElementById("div1").innerHTML = "值為1";
          }
          if (number == 2) {
          document.getElementById("div1").innerHTML = "值為2";
          }
          }
          </script>

          DIV塊測試:<div id="div1">默認(rèn)值</div>

          <a href="#" onClick="chageDiv(1)">改變值為1</a>
          <a href="#" onClick="chageDiv(2)">改變值為2</a>


          演示:
          HTML代碼


          [Ctrl+A 全部選擇 提示:你可先修改部分代碼,再按運(yùn)行]


            運(yùn)行的時(shí)候,點(diǎn)擊“改變值為1”那么“默認(rèn)值”這個(gè)內(nèi)容將會(huì)被改變?yōu)椤爸禐?”,但是注意其中的界面,就是會(huì)發(fā)現(xiàn)“DIV測試:”和“默認(rèn)值”是兩行顯示的,因?yàn)镈IV是按塊來顯示的。

          (2)對(duì)span的控制

          與div類似,但是它是按照行來顯示的,看下面的代碼:
          程序代碼 程序代碼
          <script language="javascript">
          function chageSpan(number)
          {
          if (number == 1) {
          document.getElementById("span1").innerHTML = "值為1";
          }
          if (number == 2) {
          document.getElementById("span1").innerHTML = "值為2";
          }
          }
          </script>
          Span行測試:
          <span id="span1">默認(rèn)值</span><br>
          <a href="#" onClick="chageSpan(1)">改變值為1</a>
          <a href="#" onClick="chageSpan(2)">改變值為2</a>


          當(dāng)點(diǎn)擊“改變值為1”的時(shí)候,“默認(rèn)值”將變?yōu)椤爸禐?”,但是“Span行測試”和“默認(rèn)值”是在同一行顯示的,跟DIV不一樣。

          另外一個(gè)值得注意的就是,不管是div還是span,后面的名字都是以為id來定義的,不是象表單一樣是使用name來定義的。

          (3)confirm確認(rèn)提示框的制作

          當(dāng)我們要執(zhí)行一個(gè)危險(xiǎn)操作的時(shí)候,比如刪除某個(gè)內(nèi)容等,那么就應(yīng)該給用戶相應(yīng)的提示來用戶不容易犯錯(cuò)誤。一般提示都是使用confirm()函數(shù)來處理的,給它提交一個(gè)參數(shù)作為顯示的信息提示,那么訪問的時(shí)候?qū)棾鰧?duì)話框,如果點(diǎn)擊了“確定”那么將改函數(shù)返回true,點(diǎn)擊了“取消”將放回false,我們針對(duì)這個(gè)特點(diǎn)來使用兩種方法來控制用戶是否執(zhí)行某個(gè)操作。

          看代碼:

          程序代碼 程序代碼
          <script language="javascript">
          function accessNeteasy()
          {
          if(confirm('你真的要訪問網(wǎng)易新聞 ?')) {
          location='http://calendar.eyou.eyou';
          }
          }
          function accessSina()
          {
          if (confirm('你確定要訪問新浪新聞 ?')) {
          return true;
          } else {
          return false;
          }
          }
          </script>

          訪問方式一:
          <a href="#" onClick="accessNeteasy()">網(wǎng)易新聞</a><br>
          訪問方式二:
          <a href="http://news.sina.com.cn" onClick="return accessSina()">新浪新聞</a>


            我們這里建立了兩個(gè)函數(shù),一個(gè)accessNeteay,一個(gè)accessSina,就是訪問網(wǎng)易和新浪,我們使用不同的方法,第一種就是當(dāng)點(diǎn)了鏈接以后,判斷如果是true的話,那么就location到指定鏈接,這種方法比較不具有通用型,只能針對(duì)單個(gè)的鏈接。第二種方法是使用返回值的形式,當(dāng)確定要訪問的時(shí)候返回true,不確定的時(shí)候返回false,那么這個(gè)可以針對(duì)任何鏈接來做,寫成一個(gè)通用的信息提示,方便頁面中的調(diào)用。

          以上代碼都經(jīng)過測試通過,可以自己再這個(gè)基礎(chǔ)上進(jìn)行擴(kuò)展,寫出自己需要的JavaScript代碼。
          更多小技巧建議參考藍(lán)色理想的鏈接:http://www.blueidea.com/tech/web/2004/2379.asp

          posted @ 2006-06-06 13:03 yanzhicun 閱讀(620) | 評(píng)論 (0)編輯 收藏
           
          mysql的日期和時(shí)間函數(shù)

          這里是一個(gè)使用日期函數(shù)的例子。下面的查詢選擇所有 date_col 值在最后 30 天內(nèi)的記錄。

          mysql> SELECT something FROM tbl_name
                     WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;
          
          DAYOFWEEK(date)
          返回 date 的星期索引(1 = Sunday, 2 = Monday, ... 7 = Saturday)。索引值符合 ODBC 的標(biāo)準(zhǔn)。
          mysql> SELECT DAYOFWEEK('1998-02-03');
                  -> 3
          
          WEEKDAY(date)
          返回 date 的星期索引(0 = Monday, 1 = Tuesday, ... 6 = Sunday):
          mysql> SELECT WEEKDAY('1998-02-03 22:23:00');
                  -> 1
          mysql> SELECT WEEKDAY('1997-11-05');
                  -> 2
          
          DAYOFMONTH(date)
          返回 date 是一月中的第幾天,范圍為 131
          mysql> SELECT DAYOFMONTH('1998-02-03');
                  -> 3
          
          DAYOFYEAR(date)
          返回 date 是一年中的第幾天,范圍為 1366
          mysql> SELECT DAYOFYEAR('1998-02-03');
                  -> 34
          
          MONTH(date)
          返回 date 中的月份,范圍為 112
          mysql> SELECT MONTH('1998-02-03');
                  -> 2
          
          DAYNAME(date)
          返回 date 的星期名:
          mysql> SELECT DAYNAME("1998-02-05");
                  -> 'Thursday'
          
          MONTHNAME(date)
          返回 date 的月份名:
          mysql> SELECT MONTHNAME("1998-02-05");
                  -> 'February'
          
          QUARTER(date)
          返回 date 在一年中的季度,范圍為 14
          mysql> SELECT QUARTER('98-04-01');
                  -> 2
          
          WEEK(date)
          WEEK(date,first)
          對(duì)于星期日是一周中的第一天的場合,如果函數(shù)只有一個(gè)參數(shù)調(diào)用,返回 date 為一年的第幾周,返回值范圍為 053 (是的,可能有第 53 周的開始)。兩個(gè)參數(shù)形式的 WEEK() 允許你指定一周是否以星期日或星期一開始,以及返回值為 0-53 還是 1-52。 這里的一個(gè)表顯示第二個(gè)參數(shù)是如何工作的:
          含義
          0 一周以星期日開始,返回值范圍為 0-53
          1 一周以星期一開始,返回值范圍為 0-53
          2 一周以星期日開始,返回值范圍為 1-53
          3 一周以星期一開始,返回值范圍為 1-53 (ISO 8601)
          mysql> SELECT WEEK('1998-02-20');
                  -> 7
          mysql> SELECT WEEK('1998-02-20',0);
                  -> 7
          mysql> SELECT WEEK('1998-02-20',1);
                  -> 8
          mysql> SELECT WEEK('1998-12-31',1);
                  -> 53
          
          注意,在版本 4.0 中,WEEK(#,0) 被更改為匹配 USA 歷法。 注意,如果一周是上一年的最后一周,當(dāng)你沒有使用 2 或 3 做為可選參數(shù)時(shí),MySQL 將返回 0:
          mysql> SELECT YEAR('2000-01-01'), WEEK('2000-01-01',0);
                  -> 2000, 0
          mysql> SELECT WEEK('2000-01-01',2);
                  -> 52
          
          你可能會(huì)爭辯說,當(dāng)給定的日期值實(shí)際上是 1999 年的第 52 周的一部分時(shí),MySQL 對(duì) WEEK() 函數(shù)應(yīng)該返回 52。我們決定返回 0 ,是因?yàn)槲覀兿M摵瘮?shù)返回“在指定年份中是第幾周”。當(dāng)與其它的提取日期值中的月日值的函數(shù)結(jié)合使用時(shí),這使得 WEEK() 函數(shù)的用法可靠。 如果你更希望能得到恰當(dāng)?shù)哪?周值,那么你應(yīng)該使用參數(shù) 2 或 3 做為可選參數(shù),或者使用函數(shù) YEARWEEK()
          mysql> SELECT YEARWEEK('2000-01-01');
                  -> 199952
          mysql> SELECT MID(YEARWEEK('2000-01-01'),5,2);
                  -> 52
          
          YEAR(date)
          返回 date 的年份,范圍為 10009999
          mysql> SELECT YEAR('98-02-03');
                  -> 1998
          
          YEARWEEK(date)
          YEARWEEK(date,first)
          返回一個(gè)日期值是的哪一年的哪一周。第二個(gè)參數(shù)的形式與作用完全與 WEEK() 的第二個(gè)參數(shù)一致。注意,對(duì)于給定的日期參數(shù)是一年的第一周或最后一周的,返回的年份值可能與日期參數(shù)給出的年份不一致:
          mysql> SELECT YEARWEEK('1987-01-01');
                  -> 198653
          
          注意,對(duì)于可選參數(shù) 0 或 1,周值的返回值不同于 WEEK() 函數(shù)所返回值(0), WEEK() 根據(jù)給定的年語境返回周值。
          HOUR(time)
          返回 time 的小時(shí)值,范圍為 023
          mysql> SELECT HOUR('10:05:03');
                  -> 10
          
          MINUTE(time)
          返回 time 的分鐘值,范圍為 059
          mysql> SELECT MINUTE('98-02-03 10:05:03');
                  -> 5
          
          SECOND(time)
          返回 time 的秒值,范圍為 059
          mysql> SELECT SECOND('10:05:03');
                  -> 3
          
          PERIOD_ADD(P,N)
          增加 N 個(gè)月到時(shí)期 P(格式為 YYMMYYYYMM)中。以 YYYYMM 格式返回值。 注意,期間參數(shù) P不是 一個(gè)日期值:
          mysql> SELECT PERIOD_ADD(9801,2);
                  -> 199803
          
          PERIOD_DIFF(P1,P2)
          返回時(shí)期 P1P2 之間的月數(shù)。P1P2 應(yīng)該以 YYMMYYYYMM 指定。 注意,時(shí)期參數(shù) P1P2不是 日期值:
          mysql> SELECT PERIOD_DIFF(9802,199703);
                  -> 11
          
          DATE_ADD(date,INTERVAL expr type)
          DATE_SUB(date,INTERVAL expr type)
          ADDDATE(date,INTERVAL expr type)
          SUBDATE(date,INTERVAL expr type)
          這些函數(shù)執(zhí)行日期的算術(shù)運(yùn)算。ADDDATE()SUBDATE() 分別是 DATE_ADD()DATE_SUB() 的同義詞。 在 MySQL 3.23 中,如果表達(dá)式的右邊是一個(gè)日期值或一個(gè)日期時(shí)間型字段,你可以使用 +- 代替 DATE_ADD()DATE_SUB()(示例如下)。 參數(shù) date 是一個(gè) DATETIMEDATE 值,指定一個(gè)日期的開始。expr 是一個(gè)表達(dá)式,指定從開始日期上增加還是減去間隔值。expr 是一個(gè)字符串;它可以以一個(gè) “-” 領(lǐng)頭表示一個(gè)負(fù)的間隔值。type 是一個(gè)關(guān)鍵詞,它標(biāo)志著表達(dá)式以何格式被解釋。 下表顯示 typeexpr 參數(shù)是如何關(guān)聯(lián)的:
          typeexpr期望的格式
          SECONDSECONDS
          MINUTEMINUTES
          HOURHOURS
          DAYDAYS
          MONTHMONTHS
          YEARYEARS
          MINUTE_SECOND"MINUTES:SECONDS"
          HOUR_MINUTE"HOURS:MINUTES"
          DAY_HOUR"DAYS HOURS"
          YEAR_MONTH"YEARS-MONTHS"
          HOUR_SECOND"HOURS:MINUTES:SECONDS"
          DAY_MINUTE"DAYS HOURS:MINUTES"
          DAY_SECOND"DAYS HOURS:MINUTES:SECONDS"
          expr 的格式中,MySQL 允許任何字符作為定界符。表中所顯示的是建議的定界字符。如果 date 參數(shù)是一個(gè) DATE 值,并且計(jì)算的間隔僅僅有 YEARMONTHDAY 部分(沒有時(shí)間部分),那么返回值也是一個(gè) DATE 值。否則返回值是一個(gè) DATETIME 值:
          mysql> SELECT "1997-12-31 23:59:59" + INTERVAL 1 SECOND;
                  -> 1998-01-01 00:00:00
          mysql> SELECT INTERVAL 1 DAY + "1997-12-31";
                  -> 1998-01-01
          mysql> SELECT "1998-01-01" - INTERVAL 1 SECOND;
                 -> 1997-12-31 23:59:59
          mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
              ->                 INTERVAL 1 SECOND);
                  -> 1998-01-01 00:00:00
          mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
              ->                 INTERVAL 1 DAY);
                  -> 1998-01-01 23:59:59
          mysql> SELECT DATE_ADD("1997-12-31 23:59:59",
              ->                 INTERVAL "1:1" MINUTE_SECOND);
                  -> 1998-01-01 00:01:00
          mysql> SELECT DATE_SUB("1998-01-01 00:00:00",
              ->                 INTERVAL "1 1:1:1" DAY_SECOND);
                  -> 1997-12-30 22:58:59
          mysql> SELECT DATE_ADD("1998-01-01 00:00:00",
              ->                 INTERVAL "-1 10" DAY_HOUR);
                  -> 1997-12-30 14:00:00
          mysql> SELECT DATE_SUB("1998-01-02", INTERVAL 31 DAY);
                  -> 1997-12-02
          
          如果你指定了一個(gè)太短的間隔值(沒有包括 type 關(guān)鍵詞所期望的所有間隔部分),MySQL 假設(shè)你遺漏了間隔值的最左邊部分。例如,如果指定一個(gè) typeDAY_SECOND,那么 expr 值被期望包含天、小時(shí)、分鐘和秒部分。如果你象 "1:10" 樣指定一個(gè)值,MySQL 假設(shè)天和小時(shí)部分被遺漏了,指定的值代表分鐘和秒。換句話說,"1:10" DAY_SECOND 被解釋為等價(jià)于 "1:10" MINUTE_SECOND。這類似于 MySQL 解釋 TIME 值為經(jīng)過的時(shí)間而不是一天的時(shí)刻。 注意,如果依著包含一個(gè)時(shí)間部分的間隔增加或減少一個(gè)日期值,該日期值將被自動(dòng)地轉(zhuǎn)換到一個(gè)日期時(shí)間值:
          mysql> SELECT DATE_ADD("1999-01-01", INTERVAL 1 DAY);
                 -> 1999-01-02
          mysql> SELECT DATE_ADD("1999-01-01", INTERVAL 1 HOUR);
                 -> 1999-01-01 01:00:00
          
          如果你使用了確定不正確的日期,返回結(jié)果將是 NULL。如果你增加 MONTHYEAR_MONTHYEAR,并且結(jié)果日期的天比新月份的最大天數(shù)還大,那么它將被調(diào)整到新月份的最大天數(shù):
          mysql> SELECT DATE_ADD('1998-01-30', INTERVAL 1 MONTH);
                  -> 1998-02-28
          
          注意,上面的例子中,單詞 INTERVAL 和關(guān)鍵詞 type 是不區(qū)分字母大小寫的。

          EXTRACT(type FROM date)
          EXTRACT() 函數(shù)使用與 DATE_ADD()DATE_SUB() 一致的間隔類型,但是它用于指定從日期中提取的部分,而不是進(jìn)行日期算術(shù)運(yùn)算。
          mysql> SELECT EXTRACT(YEAR FROM "1999-07-02");
                 -> 1999
          mysql> SELECT EXTRACT(YEAR_MONTH FROM "1999-07-02 01:02:03");
                 -> 199907
          mysql> SELECT EXTRACT(DAY_MINUTE FROM "1999-07-02 01:02:03");
                 -> 20102
          
          TO_DAYS(date)
          給出一個(gè)日期 date,返回一個(gè)天數(shù)(從 0 年開始的天數(shù)):
          mysql> SELECT TO_DAYS(950501);
                  -> 728779
          mysql> SELECT TO_DAYS('1997-10-07');
                  -> 729669
          
          TO_DAYS() 無意于使用先于格里高里歷法(即現(xiàn)行的陽歷)(1582)出現(xiàn)的值,因?yàn)樗豢紤]當(dāng)歷法改變時(shí)所遺失的天數(shù)。

          FROM_DAYS(N)
          給出一個(gè)天數(shù) N,返回一個(gè) DATE 值:
          mysql> SELECT FROM_DAYS(729669);
                  -> '1997-10-07'
          
          FROM_DAYS() 無意于使用先于格里高里歷法(1582)出現(xiàn)的值,因?yàn)樗豢紤]當(dāng)歷法改變時(shí)所遺失的天數(shù)。

          DATE_FORMAT(date,format)
          依照 format 字符串格式化 date 值。下面的修飾符可被用于 format 字符串中:
          修飾符 含義
          %M月的名字 (January..December)
          %W星期的名字 (Sunday..Saturday)
          %D有英文后綴的某月的第幾天 (0th, 1st, 2nd, 3rd, etc.)
          %Y年份,數(shù)字的,4 位
          %y年份,數(shù)字的,2 位
          %X周值的年份,星期日是一個(gè)星期的第一天,數(shù)字的,4 位,與 '%V' 一同使用
          %x周值的年份,星期一是一個(gè)星期的第一天,數(shù)字的,4 位,與 '%v' 一同使用
          %a縮寫的星期名 (Sun..Sat)
          %d月份中的天數(shù),數(shù)字的 (00..31)
          %e月份中的天數(shù),數(shù)字的 (0..31)
          %m月,數(shù)字的 (00..12)
          %c月,數(shù)字的 (0..12)
          %b縮寫的月份名 (Jan..Dec)
          %j一年中的天數(shù) (001..366)
          %H小時(shí) (00..23)
          %k小時(shí) (0..23)
          %h小時(shí) (01..12)
          %I小時(shí) (01..12)
          %l小時(shí) (1..12)
          %i分鐘,數(shù)字的 (00..59)
          %r時(shí)間,12 小時(shí) (hh:mm:ss [AP]M)
          %T時(shí)間,24 小時(shí) (hh:mm:ss)
          %S秒 (00..59)
          %s秒 (00..59)
          %pAMPM
          %w一周中的天數(shù) (0=Sunday..6=Saturday)
          %U星期 (00..53),星期日是一個(gè)星期的第一天
          %u星期 (00..53),星期一是一個(gè)星期的第一天
          %V星期 (01..53),星期日是一個(gè)星期的第一天。與 '%X' 一起使用
          %v星期 (01..53),星期一是一個(gè)星期的第一天。與 '%x' 一起使用
          %%一個(gè)字母 “%”
          所有其它的字符不經(jīng)過解釋,直接復(fù)制到結(jié)果中:
          mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');
                  -> 'Saturday October 1997'
          mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s');
                  -> '22:23:00'
          mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00',
                                    '%D %y %a %d %m %b %j');
                  -> '4th 97 Sat 04 10 Oct 277'
          mysql> SELECT DATE_FORMAT('1997-10-04 22:23:00',
                                    '%H %k %I %r %T %S %w');
                  -> '22 22 10 10:23:00 PM 22:23:00 00 6'
          mysql> SELECT DATE_FORMAT('1999-01-01', '%X %V');
                  -> '1998 52'
          
          在 MySQL 3.23 中,在格式修飾符前需要字符 `%'。在更早的 MySQL 版本中,`%' 是可選的。 月份與天修飾符的范圍從零開始的原因是,在 MySQL 3.23 中,它允許存儲(chǔ)不完善的日期值(例如 '2004-00-00')。

          TIME_FORMAT(time,format)
          它的使用方法與上面的 DATE_FORMAT() 函數(shù)相似,但是 format 字符串只包含處理小時(shí)、分和秒的那些格式修飾符。使用其它的修飾符會(huì)產(chǎn)生一個(gè) NULL 值或 0

          CURDATE()
          CURRENT_DATE
          'YYYY-MM-DD'YYYYMMDD 格式返回當(dāng)前的日期值,返回的格式取決于該函數(shù)是用于字符串還是數(shù)字語境中:
          mysql> SELECT CURDATE();
                  -> '1997-12-15'
          mysql> SELECT CURDATE() + 0;
                  -> 19971215
          
          CURTIME()
          CURRENT_TIME
          'HH:MM:SS'HHMMSS 格式返回當(dāng)前的時(shí)間值,返回的格式取決于該函數(shù)是用于字符串還是數(shù)字語境中:
          mysql> SELECT CURTIME();
                  -> '23:50:26'
          mysql> SELECT CURTIME() + 0;
                  -> 235026
          
          NOW()
          SYSDATE()
          CURRENT_TIMESTAMP
          'YYYY-MM-DD HH:MM:SS'YYYYMMDDHHMMSS 格式返回當(dāng)前的日期時(shí)間值,返回的格式取決于該函數(shù)是用于字符串還是數(shù)字語境中:
          mysql> SELECT NOW();
                  -> '1997-12-15 23:50:26'
          mysql> SELECT NOW() + 0;
                  -> 19971215235026
          
          注意,函數(shù) NOW() 在每個(gè)查詢中只計(jì)算一次,也就是在查詢開始執(zhí)行時(shí)。這就是說,如果在一個(gè)單獨(dú)的查詢中多次引用了 NOW(),它只會(huì)給出值都是一個(gè)相同的時(shí)間。

          UNIX_TIMESTAMP()
          UNIX_TIMESTAMP(date)
          如果調(diào)用時(shí)沒有參數(shù),以無符號(hào)的整數(shù)形式返回一個(gè) Unix 時(shí)間戳(從 '1970-01-01 00:00:00' GMT 開始的秒數(shù))。如果以一個(gè)參數(shù) date 調(diào)用 UNIX_TIMESTAMP(),它將返回該參數(shù)值從 '1970-01-01 00:00:00' GMT 開始經(jīng)過的秒數(shù)值。date 可以是一個(gè) DATE 字符串,一個(gè) DATETIME 字符串,一個(gè) TIMESTAMP,或者以一個(gè) YYMMDDYYYYMMDD 顯示的本地時(shí)間:
          mysql> SELECT UNIX_TIMESTAMP();
                  -> 882226357
          mysql> SELECT UNIX_TIMESTAMP('1997-10-04 22:23:00');
                  -> 875996580
          
          當(dāng) UNIX_TIMESTAMP 被用于一個(gè) TIMESTAMP 列時(shí),函數(shù)直接返回一個(gè)內(nèi)部的時(shí)間戳值,而不進(jìn)行一個(gè)隱含地 “string-to-unix-timestamp” 轉(zhuǎn)換。如果你傳遞一個(gè)超出范圍的日期參數(shù)給 UNIX_TIMESTAMP() ,它將返回 0,但是請(qǐng)注意,MySQL 對(duì)其僅僅進(jìn)行基本的檢驗(yàn)(年范圍 1970-2037,月份 01-12,日期 01-31)。 如果你希望減去 UNIX_TIMESTAMP() 列,你應(yīng)該需要將結(jié)果強(qiáng)制轉(zhuǎn)換為一有符號(hào)整數(shù)。查看章節(jié) 6.3.5 Cast 函數(shù)

          FROM_UNIXTIME(unix_timestamp [,format])
          'YYYY-MM-DD HH:MM:SS'YYYYMMDDHHMMSS 格式返回一個(gè) unix_timestamp 參數(shù)值,返回值的形式取決于該函數(shù)使用于字符串還是數(shù)字語境。 如果 format 給出,返回值依 format 字符串被格式。format 可以包含與 DATE_FORMAT() 函數(shù)同樣的修飾符。
          mysql> SELECT FROM_UNIXTIME(875996580);
                  -> '1997-10-04 22:23:00'
          mysql> SELECT FROM_UNIXTIME(875996580) + 0;
                  -> 19971004222300
          mysql> SELECT FROM_UNIXTIME(UNIX_TIMESTAMP(),
                                      '%Y %D %M %h:%i:%s %x');
                  -> '1997 23rd December 03:43:30 1997'
          
          SEC_TO_TIME(seconds)
          'HH:MM:SS'HHMMSS 格式返回參數(shù) seconds 被轉(zhuǎn)換到時(shí)分秒后的值,返回值的形式取決于該函數(shù)使用于字符串還是數(shù)字語境:
          mysql> SELECT SEC_TO_TIME(2378);
                  -> '00:39:38'
          mysql> SELECT SEC_TO_TIME(2378) + 0;
                  -> 3938
          
          TIME_TO_SEC(time)
          將參數(shù) time 轉(zhuǎn)換為秒數(shù)后返回:
          mysql> SELECT TIME_TO_SEC('22:23:00');
                  -> 80580
          mysql> SELECT TIME_TO_SEC('00:39:38');
                  -> 2378
          posted @ 2006-06-01 11:55 yanzhicun 閱讀(354) | 評(píng)論 (1)編輯 收藏
           
          54 改變?yōu)g覽器狀態(tài)欄文字提示
          1. <script?language=”JavaScript”>
          2. window.status?=?“A?new?status?message”;
          3. </script>


          55 彈出確認(rèn)提示框
          1. <script?language=”JavaScript”>
          2. var?
          3. userChoice?=?window.confirm(“Click?OK?or?Cancel”);
          4. if?(
          5. userChoice)?{?
          6. document.write(“You?chose?OK”);
          7. ?}?else?{?
          8. document.write(“You?chose?Cancel”);
          9. ?}
          10. </script>


          56 提示輸入
          1. <script?language=”JavaScript”>
          2. var?
          3. userName?=?window.prompt(“Please?Enter?Your?Name”,”Enter?Your?Name?Here”);
          4. document.write(“Your?Name?is?“?+?userName);
          5. </script>


          57 打開一個(gè)新窗口
          1. //打開一個(gè)名稱為myNewWindow的瀏覽器新窗口
          2. <script?language=”JavaScript”>
          3. window.open(“http://www.liu21st.com/”,”myNewWindow”);
          4. </script>


          58 設(shè)置新窗口的大小
          1. <script?language=”JavaScript”>
          2. window.open(“http://www.liu21st.com/”,”myNewWindow”,'height=300,width=300');
          3. </script>


          59 設(shè)置新窗口的位置
          1. <script?language=”JavaScript”>
          2. window.open(“http://www.liu21st.com/”,”myNewWindow”,'height=300,width=300,left=200,screenX=200,top=100,screenY=100');
          3. </script>


          60 是否顯示工具欄和滾動(dòng)欄
          1. <script?language=”JavaScript”>
          2. window.open(“http:


          61 是否可以縮放新窗口的大小
          1. <script?language=”JavaScript”>
          2. window.open('http://www.liu21st.com/'?,?'myNewWindow',?'resizable=yes'?);</script>


          62 加載一個(gè)新的文檔到當(dāng)前窗口
          1. <a?href='#'?onClick='document.location?=?'125a.html';'?>Open?New?Document</a>


          63 設(shè)置頁面的滾動(dòng)位置
          1. <script?language=”JavaScript”>
          2. if?(
          3. document.all)?{?//如果是IE瀏覽器則使用scrollTop屬性
          4. document.body.scrollTop?=?200;
          5. ?}?else?{?
          6. //如果是NetScape瀏覽器則使用pageYOffset屬性
          7. window.pageYOffset?=?200;
          8. ?}
          9. </script>


          64 在IE中打開全屏窗口
          1. <a?href='#'??onClick=”window.open('http://www.juxta.com/','newWindow','fullScreen=yes');>Open?a?full-screen?window</a>


          65 新窗口和父窗口的操作
          1. <script?language=”JavaScript”>
          2. //定義新窗口
          3. var?newWindow?=?window.open(“128a.html”,”newWindow”);
          4. newWindow.close();?//在父窗口中關(guān)閉打開的新窗口
          5. </script>
          6. 在新窗口中關(guān)閉父窗口
          7. window.opener.close()


          66 往新窗口中寫內(nèi)容
          1. <script?language=”JavaScript”>
          2. var?
          3. newWindow?=?window.open(“”,”newWindow”);
          4. newWindow.document.open();
          5. newWindow.document.write(“This?is?a?new?window”);
          6. newWIndow.document.close();
          7. </script>


          67 加載頁面到框架頁面
          1. <frameset?cols=”50%,*>
          2. <
          3. frame?name=”frame1”?src=”135a.html”>
          4. <
          5. frame?name=”frame2”?src=”about:blank”>
          6. </
          7. frameset>
          8. 在frame1中加載frame2中的頁面
          9. parent
          10. .frame2.document.location?=?“135b.html”;


          68 在框架頁面之間共享腳本
          如果在frame1中html文件中有個(gè)腳本
          1. function?doAlert()?{?
          2. window.alert(“Frame?1?is?loaded”);
          3. ?}

          那么在frame2中可以如此調(diào)用該方法
          1. <body?onLoad=”parent.frame1.doAlert();>
          2. This?is?frame?2.
          3. </body>


          69 數(shù)據(jù)公用
          可以在框架頁面定義數(shù)據(jù)項(xiàng),使得該數(shù)據(jù)可以被多個(gè)框架中的頁面公用
          1. <script?language=”JavaScript”>
          2. var?
          3. persistentVariable?=?“This?is?a?persistent?value”;
          4. </script>
          5. <frameset?cols=”50%,*”>
          6. <frame?name=”frame1”?src=”138a.html”>
          7. <frame?name=”frame2”?src=”138b.html”>
          8. </frameset>


          這樣在frame1和frame2中都可以使用變量persistentVariable
          70 框架代碼庫
          根據(jù)以上的一些思路,我們可以使用一個(gè)隱藏的框架頁面來作為整個(gè)框架集的代碼庫
          1. <frameset?cols=”0,50%,*>
          2. <
          3. frame?name=”codeFrame”?src=”140code.html”>
          4. <
          5. frame?name=”frame1”?src=”140a.html”>
          6. <
          7. frame?name=”frame2”?src=”140b.html”>
          8. </
          9. frameset>

          posted @ 2006-05-23 13:46 yanzhicun 閱讀(643) | 評(píng)論 (1)編輯 收藏
          CALENDER
          <2006年5月>
          30123456
          78910111213
          14151617181920
          21222324252627
          28293031123
          45678910

          常用鏈接

          留言簿(1)

          隨筆檔案

          文章檔案

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜


          Powered By: 博客園
          模板提供滬江博客

          主站蜘蛛池模板: 广昌县| 泰兴市| 会理县| 定兴县| 武强县| 腾冲县| 铜川市| 浙江省| 兴和县| 珠海市| 成都市| 临朐县| 临清市| 景德镇市| 博白县| 平阳县| 五台县| 崇信县| 泉州市| 华阴市| 绥宁县| 康保县| 安岳县| 盖州市| 长宁县| 徐汇区| 内江市| 阜康市| 黄山市| 柳江县| 清水县| 灵璧县| 台州市| 崇阳县| 广安市| 荣昌县| 万州区| 天柱县| 合山市| 无锡市| 宁夏|