




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第五章數(shù)據(jù)與數(shù)據(jù)運(yùn)算
數(shù)據(jù)是計(jì)算機(jī)加工處理的對(duì)象,VisualFoxPro數(shù)據(jù)的表現(xiàn)形式有常量、變量、表達(dá)式和函數(shù)四種類型。常量和變量是數(shù)據(jù)的基本表現(xiàn)形式,表達(dá)式和函數(shù)體現(xiàn)了語言對(duì)數(shù)據(jù)進(jìn)行處理的能力。本章為程序設(shè)計(jì)打下基礎(chǔ),介紹VisualFoxPro的數(shù)據(jù)和數(shù)據(jù)運(yùn)算。5.1
數(shù)據(jù)類型5.2
常量與變量的應(yīng)用5.3
表達(dá)式的應(yīng)用5.4
函數(shù)的應(yīng)用
5.1數(shù)據(jù)類型
數(shù)據(jù)記錄了現(xiàn)實(shí)世界中客觀事物的屬性,它包括兩個(gè)方面:數(shù)據(jù)內(nèi)容與數(shù)據(jù)形式。數(shù)據(jù)內(nèi)容就是數(shù)據(jù)的值,數(shù)據(jù)形式就是數(shù)據(jù)的存儲(chǔ)形式和運(yùn)算方式,也稱為數(shù)據(jù)類型。VisualFoxPro中常用的數(shù)據(jù)類型有數(shù)值型、字符型、日期型、日期時(shí)間型、邏輯型和貨幣型6種,另外還有備注型、通用型、雙精度型、整型等,這幾種數(shù)據(jù)類型只適用于表中的字段。1.字符型
字符型(Character)數(shù)據(jù)是不能進(jìn)行算術(shù)運(yùn)算的文字?jǐn)?shù)據(jù)類型,用字母C表示。字符型數(shù)據(jù)包括中文字符、英文字符、數(shù)字字符和其他ASCII字符,其長(zhǎng)度(即字符個(gè)數(shù))范圍是0~254個(gè)字符。2.?dāng)?shù)值型
數(shù)值型(Numeric)數(shù)據(jù)是表示數(shù)量并可以進(jìn)行算術(shù)運(yùn)算的數(shù)據(jù)類型,用字母N表示。數(shù)值型數(shù)據(jù)由數(shù)字、小數(shù)點(diǎn)和正負(fù)號(hào)組成。數(shù)值型數(shù)據(jù)在內(nèi)存中占用8個(gè)字節(jié)。在VisualFoxPro中,具有數(shù)值特征的數(shù)據(jù)類型還有整型(Integer)、浮點(diǎn)型(Float)和雙精度型(Double),這3種數(shù)據(jù)類型只能用于字段變量。3.貨幣型
貨幣型(Currency)數(shù)據(jù)是為存儲(chǔ)貨幣值而使用的一種數(shù)據(jù)類型,它默認(rèn)保留4位小數(shù),占據(jù)8個(gè)字節(jié)存儲(chǔ)空間。貨幣型數(shù)據(jù)用字母Y表示,書寫時(shí)數(shù)據(jù)前面要加上一個(gè)前置的符號(hào)“$”。4.日期型
日期型(Date)數(shù)據(jù)是表示日期的數(shù)據(jù),用字母D表示。日期型數(shù)據(jù)占用8個(gè)字節(jié)存儲(chǔ)空間。日期型數(shù)據(jù)的顯示格式有多種,它受系統(tǒng)日期格式設(shè)置的影響。5.日期時(shí)間型
日期時(shí)間型(DateTime)數(shù)據(jù)是表示日期和時(shí)間的數(shù)據(jù),用字母T表示。日期時(shí)間型數(shù)據(jù)也是采用固定長(zhǎng)度8個(gè)字節(jié)。6.邏輯型
邏輯類型用于存儲(chǔ)表示邏輯真值(.T.)和邏輯假值(.F.)的數(shù)據(jù),邏輯型只有真和假兩種結(jié)果,長(zhǎng)度固定為1個(gè)字節(jié)。
5.2常量與變量
在VisualFoxPro中,常量與變量是最基本的兩種數(shù)據(jù)表現(xiàn)形式,是程序設(shè)計(jì)的基本元素。常量是在程序運(yùn)行過程中保持不變的量,它區(qū)別于變量,變量是在程序運(yùn)行過程中發(fā)生改變的量。5.2.1常量
常量是一個(gè)具體的、不變的值。VisualFoxPro按常量取值的數(shù)據(jù)類型,將常量分為以下6種數(shù)據(jù)類型。1.字符型常量
字符型常量是用定界符括起來的一串字符。在VisualFoxPro中,定界符包括半角單引號(hào)、雙引號(hào)和方括號(hào)三種。例如,'ABCDE'、"中國(guó)"、[123]都是字符常量。
2.?dāng)?shù)值型常量
數(shù)值型常量就是平時(shí)所講的常數(shù),由數(shù)字、小數(shù)點(diǎn)和正負(fù)號(hào)組成。例如12,-3.14都是數(shù)值型常量。為了表示很大或很小的數(shù)值型常量,可以使用科學(xué)計(jì)數(shù)法來表示。例如6.23E-12表示6.23×10-12。3.貨幣型常量
貨幣型常量在存儲(chǔ)和計(jì)算時(shí)采用4位小數(shù),并且沒有科學(xué)計(jì)數(shù)法表示。例如$124.56是一個(gè)貨幣型常量。4.日期型常量
日期型常量的定界符是一對(duì)花括號(hào),花括號(hào)內(nèi)包括年、月、日3部分內(nèi)容,各部分之間用分隔符分隔。分隔符可以是斜杠(/)、連字符(-)、句點(diǎn)(.)和空格等。日期型常量的格式有兩種:(1)傳統(tǒng)的日期型格式為{mm/dd/yy},這種格式的日期受到命令語句SETDATETO設(shè)置的影響。為了使用系統(tǒng)默認(rèn)的日期格式,還需要先執(zhí)行命令SETSTRICTDATETO0命令,此命令的功能是忽略嚴(yán)格的日期格式檢查。(2)嚴(yán)格的日期格式是{^yyyy/mm/dd},這種格式能準(zhǔn)確表達(dá)一個(gè)日期,它不受SETDATETO命令影響。日期格式的設(shè)置還要受到下列命令的影響:
SETMARKTO[日期分隔符]設(shè)置顯示日期型數(shù)據(jù)時(shí)使用的分隔符,如“-”、“/”、“.”等。
SETDATETO[日期格式]設(shè)置日期的顯示格式,如“YMD”表示年月日格式,“AMERICAN”表示美國(guó)標(biāo)準(zhǔn)格式等。
SETCENTURYON/OFF狀態(tài)為ON時(shí),日期型數(shù)據(jù)顯示4位年份;狀態(tài)為OFF時(shí),顯示2位年份。例5-1影響日期格式的命令。命令和結(jié)果如圖5-1所示。圖5-1影響日期格式的命令示例
5.日期時(shí)間型常量
日期時(shí)間型常量包括日期和時(shí)間兩部分內(nèi)容,格式是:{<日期>,<時(shí)間>},日期和時(shí)間中間也可以用空格分隔。例如,{^2004-12-2,11:27A}、{^2004-12-221:27:35P}分別表示2004年12月2日上午11點(diǎn)27分和2004年12月22日下午1點(diǎn)27分35秒。6.邏輯型常量
邏輯型常量表示邏輯判斷的結(jié)果,只有“真”和“假”兩種值。在VisualFoxPro中,邏輯真用.T.、.Y.、.t.或.y.表示,邏輯假用.F.、.N.、.f.或.n.表示。注意字母前后的圓點(diǎn)一定不能缺少。
5.2.2變量
變量是在操作過程中其值可以改變的數(shù)據(jù)對(duì)象。在VisualFoxPro中,變量分為字段變量和內(nèi)存變量?jī)深悺?.字段變量
字段變量就是表中的字段名,它是表中最基本的數(shù)據(jù)單元。字段變量的命名、類型、長(zhǎng)度是在定義表結(jié)構(gòu)時(shí)完成的,字段變量的值就是表中當(dāng)前記錄(記錄指針?biāo)傅挠涗洠?duì)應(yīng)的字段的值。2.內(nèi)存變量
內(nèi)存變量是內(nèi)存中的存儲(chǔ)單元,可以用來保存程序運(yùn)行過程中的中間結(jié)果,當(dāng)退出VisualFoxPro系統(tǒng)后,內(nèi)存變量將自動(dòng)從內(nèi)存中清除。內(nèi)存變量的類型包括數(shù)值型、字符型、貨幣型、邏輯型、日期型和日期時(shí)間型6種。
每個(gè)內(nèi)存變量都有一個(gè)標(biāo)識(shí),稱為內(nèi)存變量名,可以通過內(nèi)存變量名來訪問內(nèi)存變量的值。內(nèi)存變量的命名由字母、數(shù)字和下劃線組成,并由字母和下劃線開頭。在VisualFoxPro中使用內(nèi)存變量時(shí),如果當(dāng)前表中存在一個(gè)同名的字段變量,則在訪問內(nèi)存變量時(shí),必須在內(nèi)存變量名前加前綴M.(或M->),否則系統(tǒng)將訪問同名的字段變量。例如:
姓名=“Rose”&&姓名為內(nèi)存變量
?姓名&&顯示結(jié)果為:Rose
use學(xué)生&&打開“學(xué)生”表,并指向第4條記錄
go4
?姓名&&此時(shí)顯示的是表中第4條記錄的姓名:趙小紅
?姓名,m.姓名&&顯示結(jié)果為:趙小紅Rose
在該命令段中最后一條語句中,變量<姓名>顯示的是表中的數(shù)據(jù)“趙小紅”,變量<m.姓名>顯示的是內(nèi)存中的數(shù)據(jù)“Rose”。
3.內(nèi)存變量的操作(1)內(nèi)存變量的賦值格式1:STORE<表達(dá)式>TO<變量名表>格式2:<內(nèi)存變量名>=<表達(dá)式>功能:計(jì)算表達(dá)式的值并將表達(dá)式的值賦給內(nèi)存變量,格式1可以一次給多個(gè)內(nèi)存變量賦值,格式2一次只可以給一個(gè)內(nèi)存變量賦值。例如,下面是3個(gè)賦值語句:STORE36+22TOa1,a2x=36+22y=58(2)內(nèi)存變量的顯示格式:?|??<內(nèi)存變量名>
功能:顯示內(nèi)存變量的值,命令?在下一行的起始處輸出變量值,??在當(dāng)前行的光標(biāo)處直接輸出變量值。顯示內(nèi)存變量的命令還有LIST|DISPLAYMEMORY,用于顯示內(nèi)存中的全部?jī)?nèi)存變量。(3)內(nèi)存變量的清除格式1:CLEARMEMORY
格式2:RELEASE<內(nèi)存變量名表>
格式1清除所有內(nèi)存變量,格式2清除指定的內(nèi)存變量。例如:RELEASEa1,a2&&清除內(nèi)存變量a1,a2,其他內(nèi)存變量保留
CLEARMEMORY&&清除系統(tǒng)中用戶定義的全部?jī)?nèi)存變量這里,&&是命令行注釋語句,用于解釋前面命令的功能。4.?dāng)?shù)組
數(shù)組變量是一組變量的集合,這組變量可以具有不同的數(shù)據(jù)類型,其中的每一個(gè)變量稱為一個(gè)數(shù)組元素,即每個(gè)數(shù)組由若干數(shù)組元素組成,每個(gè)數(shù)組元素相當(dāng)于一個(gè)簡(jiǎn)單內(nèi)存變量。數(shù)組元素通過數(shù)組名和代表數(shù)組元素的順序號(hào)來訪問,順序號(hào)稱為下標(biāo)。(1)數(shù)組的創(chuàng)建數(shù)組在使用之前必須要通過DIMENSION或DECLARE命令來創(chuàng)建。在VisualFoxPro中,可以創(chuàng)建只有一個(gè)下標(biāo)的一維數(shù)組,或有兩個(gè)下標(biāo)的二維數(shù)組。創(chuàng)建后的數(shù)組各元素?cái)?shù)據(jù)類型可以不同,默認(rèn)的,每個(gè)元素的值都是.F.,數(shù)據(jù)下標(biāo)的起始值為1。創(chuàng)建數(shù)組的命令格式是:格式1:DIMENSION<數(shù)組名>(<下標(biāo)1>[,<下標(biāo)2>])格式2:DECLARE<數(shù)組名>(<下標(biāo)1>[,<下標(biāo)2>])以上兩個(gè)命令功能完全相同。數(shù)組創(chuàng)建后,系統(tǒng)自動(dòng)給每個(gè)數(shù)組元素賦以邏輯假.F.。例如,創(chuàng)建一個(gè)具有6個(gè)元素的一維數(shù)組:
DIMENSIONaa(6)aa數(shù)組創(chuàng)建完成后,用戶可以使用aa(1),aa(2),aa(3),aa(4),aa(5),aa(6)共6個(gè)內(nèi)存變量單元存取數(shù)據(jù),即6個(gè)數(shù)組元素,每個(gè)元素的默認(rèn)值都是.F.。(2)數(shù)組的操作例5-2在命令窗口中完成下列操作,創(chuàng)建二維數(shù)組并賦值。DIMENSION bb(2,3)&&創(chuàng)建二維數(shù)組,包含6個(gè)元素&&bb(1,1),bb(1,2),bb(1,3),bb(2,1),bb(2,2),bb(2,3)bb(1,1)=100 &&以下三行為數(shù)組元素賦值bb(2,1)={^1999-9-9}STORE[abc]tobb(2,2),bb(2,3)?bb(1,1),bb(1,2),bb(1,3),bb(2,1),bb(2,2),bb(2,3)&&顯示數(shù)組元素值顯示結(jié)果是:100.F..F.09/09/99abc
abc
注意:①在VisualFoxPro中,任意使用簡(jiǎn)單內(nèi)存變量的地方,均可以使用數(shù)組元素。②若對(duì)數(shù)組名賦值,表示將同一個(gè)值賦給數(shù)組的全部元素,這稱為數(shù)組的初始化。③數(shù)組名不能與簡(jiǎn)單變量名重復(fù)。④對(duì)二維數(shù)組賦值時(shí),經(jīng)常用二重循環(huán)來實(shí)現(xiàn)。5.3表達(dá)式的應(yīng)用
將常量、變量和函數(shù)用運(yùn)算符連接起來的式子稱為表達(dá)式。根據(jù)運(yùn)算對(duì)象的數(shù)據(jù)類型不同,表達(dá)式可以分為算術(shù)表達(dá)式、字符表達(dá)式、日期和日期時(shí)間表達(dá)式、關(guān)系表達(dá)式和邏輯表達(dá)式等。5.3.1算術(shù)表達(dá)式
用算術(shù)運(yùn)算符將數(shù)值型數(shù)據(jù)連接起來的式子叫算術(shù)表達(dá)式,算術(shù)表達(dá)式的運(yùn)算結(jié)果是數(shù)值型常數(shù)。算術(shù)運(yùn)算符的優(yōu)先級(jí)順序和一般算術(shù)規(guī)則相同,算術(shù)運(yùn)算符含義及表達(dá)式的實(shí)例見表5-1。
表5-1算術(shù)運(yùn)算符及實(shí)例
表5-2字符運(yùn)算符及實(shí)例
5.3.2字符表達(dá)式
字符表達(dá)式是用字符運(yùn)算符將字符型數(shù)據(jù)連接起來的式子。字符表達(dá)式包括連接和包含兩類運(yùn)算,運(yùn)算結(jié)果是字符型常量或邏輯型常量。字符型的連接運(yùn)算包括“+”和“-”兩個(gè)運(yùn)算符,其優(yōu)先級(jí)相同。包含運(yùn)算符“$”,它的作用是比較兩個(gè)字符串,判斷前面的字符串是否被后面的字符串包含,返回一個(gè)邏輯值。字符運(yùn)算符含義及表達(dá)式的實(shí)例見表4-2。
5.3.3日期和日期時(shí)間表達(dá)式日期和日期時(shí)間表達(dá)式是指包含日期或日期時(shí)間型數(shù)據(jù)和日期運(yùn)算符的表達(dá)式。日期時(shí)間表達(dá)式運(yùn)算的結(jié)果是日期時(shí)間型常數(shù)或數(shù)值型常數(shù),其運(yùn)算符包括“+”和“-”兩種。日期和日期時(shí)間運(yùn)算符及表達(dá)式的實(shí)例見表5-3。表4-3日期和時(shí)間運(yùn)算符及表達(dá)式實(shí)例日期運(yùn)算符中<日期>+<天數(shù)>運(yùn)算結(jié)果,是在已給的日期再加上天數(shù),得到新的日期。日期運(yùn)算符中<日期>-<日期>運(yùn)算結(jié)果,是計(jì)算已給的兩個(gè)日期相差的天數(shù)。日期時(shí)間運(yùn)算符中<日期時(shí)間>+<秒數(shù)>運(yùn)算結(jié)果,是在已給的日期時(shí)間再加上秒數(shù),得到新的日期時(shí)間。日期時(shí)間運(yùn)算符中<日期時(shí)間>-<日期時(shí)間>運(yùn)算結(jié)果,是計(jì)算已給的兩個(gè)日期時(shí)間相差的秒數(shù)。兩個(gè)日期型數(shù)據(jù)或日期時(shí)間型數(shù)據(jù)不能相加。5.3.4關(guān)系表達(dá)式
關(guān)系表達(dá)式是由關(guān)系運(yùn)算符將兩個(gè)同類型的數(shù)據(jù)連接起來的式子。關(guān)系表達(dá)式表示兩個(gè)量之間的比較,返回邏輯型常數(shù)。相同類型的數(shù)據(jù)都可以進(jìn)行比較,比較規(guī)則如下:數(shù)值型和貨幣型數(shù)據(jù)按照其數(shù)值的大小進(jìn)行比較。日期和日期時(shí)間型數(shù)據(jù)比較時(shí),越早的日期或時(shí)間越小,越晚的日期或時(shí)間越大。邏輯型數(shù)據(jù)比較時(shí),.T.比.F.大。字符型數(shù)據(jù)比較大小時(shí),和VisualFoxPro環(huán)境設(shè)置有關(guān),可以根據(jù)需要設(shè)置排序順序。關(guān)系運(yùn)算符及表達(dá)式的實(shí)例見表4-4。表5-4關(guān)系運(yùn)算符及表達(dá)式實(shí)例
關(guān)系運(yùn)算符中,運(yùn)算符“==”和“=”在進(jìn)行字符串比較時(shí)有所區(qū)別,其他情況下含義相同。在用“==”運(yùn)算符比較兩個(gè)字符串時(shí),只有當(dāng)兩個(gè)字符串完全相同(包括空格及字符的位置)時(shí),運(yùn)算結(jié)果才會(huì)是邏輯真.T.,否則為邏輯假.F.。
在用“=”運(yùn)算符比較兩個(gè)字符串時(shí),運(yùn)算結(jié)果與SETEXACTON|OFF設(shè)置有關(guān),該命令是設(shè)置精確匹配與否的開關(guān)。系統(tǒng)默認(rèn)OFF狀態(tài)。當(dāng)處于OFF狀態(tài)時(shí),只要右邊的字符串與左邊字符串的前面部分內(nèi)容相匹配,即可得到邏輯真.T.的結(jié)果。當(dāng)處于ON狀態(tài)時(shí),比較到兩個(gè)字符串全部結(jié)束,先在較短字符串的尾部加上若干個(gè)空格,使兩個(gè)字符串的長(zhǎng)度相等,然后再進(jìn)行比較。例如:
s1="abc“s2="abc"?s1=s2&&系統(tǒng)默認(rèn)為SETEXACTOFF狀態(tài),結(jié)果:.F.?s2=s1&&結(jié)果:.T.SETEXACTON?s1=s2&&填充空格后再比較,結(jié)果:.T.?s2=s1&&同上5.3.5邏輯表達(dá)式1.邏輯表達(dá)式
邏輯表達(dá)式是由邏輯運(yùn)算符將邏輯型數(shù)據(jù)連接起來的式子,運(yùn)算結(jié)果是邏輯型。邏輯運(yùn)算符包括:.NOT.、.AND.、.OR.三種,各種邏輯運(yùn)算符及表達(dá)式的實(shí)例見表5-5。
表5-5邏輯運(yùn)算符及表達(dá)式實(shí)例
表5-5 邏輯運(yùn)算符及表達(dá)式實(shí)例運(yùn)算符功
能優(yōu)
先
級(jí)表達(dá)式實(shí)例表
達(dá)
式
值.NOT.邏輯非1.NOT.24<>23.F..AND.邏輯與23*5=16.AND..T..F..OR.邏輯或3{^1999-9-9}<DATE().OR..F..T.
在表5-5中,邏輯非運(yùn)算符(.NOT.)是單目運(yùn)算符,只作用于后面的一個(gè)關(guān)系(邏輯)表達(dá)式。邏輯與(.AND.)與邏輯或(.OR.)是雙目運(yùn)算符,用于連接兩個(gè)關(guān)系(邏輯)表達(dá)式。邏輯運(yùn)算符的運(yùn)算規(guī)則是:對(duì)于.NOT.運(yùn)算,若操作數(shù)為真,則返回假;反之,若操作數(shù)為假,則返回真。對(duì)于.AND.運(yùn)算,只有兩個(gè)表達(dá)式同時(shí)為真,表達(dá)式值才為真,只要其中一個(gè)為假,則表達(dá)式值為假。對(duì)于.OR.運(yùn)算,兩個(gè)表達(dá)式中只要有一個(gè)為真,表達(dá)式即為真,只有兩個(gè)表達(dá)式均為假時(shí),表達(dá)式值才為假。2.邏輯表達(dá)式的應(yīng)用
在邏輯表達(dá)式中,可以出現(xiàn)不同類型的運(yùn)算符,它們的運(yùn)算優(yōu)先順序?yàn)椋合葓?zhí)行算術(shù)運(yùn)算、字符串運(yùn)算和日期時(shí)間運(yùn)算,其次執(zhí)行關(guān)系運(yùn)算,最后執(zhí)行邏輯運(yùn)算。例5-3不同類型運(yùn)算符組成的表達(dá)式示例。?21>4**2AND{^2001-1-1}<{^2002-1-1}OR.T.<.F.AND.T..T.?((21%4)=1)AND3%2^4=3OR[計(jì)算機(jī)]!=[計(jì)算機(jī)].T.例5-4學(xué)生表結(jié)構(gòu)如下:學(xué)生(學(xué)號(hào)(C,5),姓名(C,10),性別(C,2),出生日期(D),助學(xué)金(N,6,1))寫出如下表達(dá)式:(1)性別為“男”的出生日期在1985年以前的學(xué)生。性別=[男]AND出生日期<{^1985-1-1}(2)年齡小于20的或性別為“女”的學(xué)生。
YEAR(DATE())-YEAR(出生日期)<20OR性別=[女]5.4函數(shù)
函數(shù)是實(shí)現(xiàn)特定運(yùn)算的操作,它通過函數(shù)調(diào)用或出現(xiàn)在表達(dá)式中,函數(shù)的運(yùn)算結(jié)果稱為返回值。函數(shù)調(diào)用的形式為:函數(shù)名([參數(shù)列表])
VisualFoxPro提供了大量函數(shù)供用戶使用,大致可以把函數(shù)分為數(shù)值函數(shù)、字符函數(shù)、日期函數(shù)、類型轉(zhuǎn)換函數(shù)、數(shù)據(jù)庫(kù)函數(shù)和測(cè)試函數(shù)6大類。下面分類介紹一些常用函數(shù)的使用。5.4.1數(shù)值函數(shù)
數(shù)值函數(shù)是指函數(shù)返回值為數(shù)值的一類函數(shù)。1.絕對(duì)值函數(shù)格式:ABS(<數(shù)值型表達(dá)式>)功能:求數(shù)值型表達(dá)式的絕對(duì)值。函數(shù)值為數(shù)值型。2.平方根函數(shù)格式:SQRT(<數(shù)值型表達(dá)式>)功能:求數(shù)值型表達(dá)式的算術(shù)平方根,數(shù)值型表達(dá)式的值應(yīng)不小于零。函數(shù)值為數(shù)值型。3.符號(hào)函數(shù)格式:SIGN(<數(shù)值型表達(dá)式>)功能:用于計(jì)算一個(gè)數(shù)值表達(dá)式的符號(hào)。當(dāng)表達(dá)式的結(jié)果為正數(shù)、負(fù)數(shù)和零時(shí),分別返回1、-1和0。例4-5x=-20.25 ?SQRT(ABS(x)),SIGN(x),SIGN(-x) 4.50-114.指數(shù)函數(shù)格式:EXP(<數(shù)值型表達(dá)式>)功能:將數(shù)值型表達(dá)式的值作為指數(shù)x,求出ex的值。函數(shù)值為數(shù)值型。5.對(duì)數(shù)函數(shù)格式:LOG(<數(shù)值型表達(dá)式>)LOG10(<數(shù)值型表達(dá)式>)功能:LOG求數(shù)值型表達(dá)式的自然對(duì)數(shù);LOG10求數(shù)值型表達(dá)式的常用對(duì)數(shù)。數(shù)值型表達(dá)式的值必須大于零。函數(shù)值為數(shù)值型。例5-6xx=2.718
yy=100 xx1=LOG(xx) yy1=LOG10(YY) zz1=EXP(1) ?xx1,yy1,zz1 1.0002.002.726.取整函數(shù)格式:INT(<數(shù)值型表達(dá)式>)
CEILING(<數(shù)值型表達(dá)式>)
FLOOR(<數(shù)值型表達(dá)式>)功能:INT()取數(shù)值型表達(dá)式的整數(shù)部分;CEILING()取大于或等于指定數(shù)值型表達(dá)式的最小整數(shù);FLOOR()取小于或等于指定數(shù)值型表達(dá)式的最大整數(shù)。函數(shù)值均為數(shù)值型。例5-7x=-3.725?INT(x),CEILING(x),CEILING(-x),FLOOR(x),FLOOR(-x)-3-34-437.求余數(shù)函數(shù)格式:MOD(<數(shù)值型表達(dá)式1>,<數(shù)值型表達(dá)式2>)功能:求<數(shù)值型表達(dá)式1>除以<數(shù)值型表達(dá)式2>所得出的余數(shù),所得余數(shù)的符號(hào)和表達(dá)式2相同。如果被除數(shù)與除數(shù)同號(hào),那么函數(shù)值即為兩數(shù)相除的余數(shù)。如果被除數(shù)與除數(shù)異號(hào),則函數(shù)值為兩數(shù)相除的余數(shù)再加上除數(shù)的值。函數(shù)值為數(shù)值型。例5-8?MOD(25,8),MOD(-25,-8),MOD(25,-8),MOD(-25,8)1-1-778.四舍五入函數(shù)格式:ROUND(<數(shù)值型表達(dá)式1>,<數(shù)值型表達(dá)式2>)功能:對(duì)<數(shù)值型表達(dá)式>求值并保留n位小數(shù),從n+1位小數(shù)起進(jìn)行四舍五入。n的值由數(shù)值型表達(dá)式2確定。若n小于0,則對(duì)<數(shù)值型表達(dá)式1>的整數(shù)部分按n的絕對(duì)值進(jìn)行四舍五入。例5-9?ROUND(-2.26*2,1),ROUND(156.78,-1) -4.51609.求最大值和最小值函數(shù)格式:MAX(<表達(dá)式1>,<表達(dá)式2>,…,<表達(dá)式n>)
MIN(<表達(dá)式1>,<表達(dá)式2>,…,<表達(dá)式n>)功能:MAX()求n個(gè)表達(dá)式中的最大值;
MIN()求n個(gè)表達(dá)式中的最小值。表達(dá)式的類型可以是數(shù)值型、字符型、貨幣型、浮點(diǎn)型、雙精度型、日期型和日期時(shí)間型,但所有表達(dá)式的類型應(yīng)相同。函數(shù)值的類型與自變量的類型一致。例5-10?MAX({^2002-12-23},{^1999-9-9},{^1999-9-9}+366)12/23/02?MIN({^2002-12-23},{^1999-9-9},{^1999-9-9}+366)09/09/99?MIN([汽車],[飛機(jī)],[輪船]),MAX([2],[12],[05])飛機(jī) 210.π函數(shù)格式:PI()功能:返回圓周率的近似值。5.4.2字符函數(shù)
字符函數(shù)是用于對(duì)字符或字符串操作的函數(shù),返回值可以是字符型、數(shù)值型或邏輯型等。1.求字符串長(zhǎng)度函數(shù)格式:LEN(<字符型表達(dá)式>)功能:求字符串的長(zhǎng)度,即所包含的字符個(gè)數(shù)。若是空串,則返回值為零,函數(shù)值為數(shù)值型。2.大小寫字母轉(zhuǎn)換函數(shù)格式:LOWER(<字符型表達(dá)式>)UPPER(<字符型表達(dá)式>)功能:LOWER()將字符串中的大寫字母轉(zhuǎn)換成小寫字母;
UPPER()將字符串中的小寫字母轉(zhuǎn)換成大寫字母。例5-11s1=[中國(guó)大連] s2=[China] ?LEN(s1),LOWER(s2),UPPER(s2)9chinaCHINA3.求子串位置函數(shù)格式:AT(<字符型表達(dá)式1>,<字符型表達(dá)式2>)
ATC(<字符型表達(dá)式l>,<字符型表達(dá)式2>)功能:若<字符型表達(dá)式1>是<字符型表達(dá)式2>子串,則給出<字符型表達(dá)式1>在<字符型表達(dá)式2)中的開始位置;若不存在,函數(shù)值為0。函數(shù)返回值為數(shù)值型,ATC()函數(shù)在子串比較時(shí)不區(qū)分字母大小寫。例5-12xm=[李志]?AT([李],xm),AT([FOX],[VisualFoxPro]),ATC([FOX],[VisualFoxPro]) 1084.取子串函數(shù)格式:LEFT(<字符型表達(dá)式>,<長(zhǎng)度>)RIGHT(<字符型表達(dá)式>,<長(zhǎng)度>)SUBSTR(<字符型表達(dá)式>,<起始位置>,[,<長(zhǎng)度>])功能:LEFT()函數(shù)從字符型表達(dá)式左邊的第一個(gè)字符開始截取指定長(zhǎng)度子串;RIGHT()函數(shù)從字符型表達(dá)式右邊的第一個(gè)字符開始截取指定長(zhǎng)度子串;SUBSTR()函數(shù)從指定字符表達(dá)式的起始位置取指定長(zhǎng)度的子串作為函數(shù)值。若長(zhǎng)度省略,則從起始位置起,一直取到字符串尾的字符串作為函數(shù)值。若起始位置或長(zhǎng)度為0,則函數(shù)值為空串。顯然SUBSTR()函數(shù)可以代替LEFT()函數(shù)和RIGHT()函數(shù)。例5-13STORE[VisualFoxPro]TOs1 s2=LEFT(s1,6) &&結(jié)果:Visual s3=RIGHT(s1,6) &&結(jié)果:FoxPro s4=SUBSTR(s1,8) &&結(jié)果:Visual s5=SUBSTR(s1,8,3) &&結(jié)果:Fox ?s1,s2,s3,s4,s5 VisualFoxProVisualFoxProFoxProFox5.刪除字符串前后空格函數(shù)格式:LTRIM(<字符型表達(dá)式>) RTRIM(<字符型表達(dá)式>)ALLTRIM(<字符型表達(dá)式>)功能:LTRIM()刪除字符串的前導(dǎo)空格;
RTRIM()刪除字符串的尾部空格,RTRIM亦可寫成
TRIM;
ALLTRIM()刪除字符串中的前導(dǎo)和尾部空格。
ALLTRIM函數(shù)兼有LTRIM和RTRIM函數(shù)的功能。6.生成空格函數(shù)格式:SPACE(<數(shù)值型表達(dá)式>)功能:生成若干個(gè)空格,空格的個(gè)數(shù)由數(shù)值型表達(dá)式的值決定。例5-14STORE[national]TOs1 STORE[examination]TOs2 ?s1+s2,RTRIM(s1)+LTRIM(s2) nationalexaminationnationalexamination?LEN(s1+s2),LEN(RTRIM(s1)+LTRIM(s2))2119
STORE[national]TOt1STORE[examination]TOt2?t1+t2,t1+SPACE(8)+t2
nationalexaminationnationalexamination7.字符串替換函數(shù)格式:STUFF(<字符型表達(dá)式1>,<起始位置>,<長(zhǎng)度>,<字符型表達(dá)式2>)功能:用<字符型表達(dá)式2>去替換<字符型表達(dá)式1>中由起始位置開始指定長(zhǎng)度的若干個(gè)字符。如果字符型表達(dá)2的值是空串,則字符型表達(dá)式1中由起始位置開始所指定的若干個(gè)字符被刪除。8.產(chǎn)生重復(fù)字符函數(shù)格式:REPLICATE(<字符型表達(dá)式>,<數(shù)值型表達(dá)式>)功能:重復(fù)給定字符串若干次,次數(shù)由數(shù)值型表達(dá)式給定。例5-15?STUFF([abcdefg],4,3,[1234567]) abc1234567g ?REPLICATE([-*-],4) -*--*--*--*-9.宏代換函數(shù)格式:&<字符型內(nèi)存變量>功能:用內(nèi)存變量的內(nèi)容替換宏代換所在的位置。例5-16STORE[學(xué)生]TOfilenameUSEfilename&&擬打開文件filename.dbf,若文件不存在,系統(tǒng)將提示。
USE&filename&&用filename變量的內(nèi)容代替宏代換所在的位置,擬打開&&文件“學(xué)生.dbf”。
BROWSE例5-17m=225n=231k=[m+n]?k,&km+n4565.4.3日期和時(shí)間函數(shù)
日期和時(shí)間函數(shù)是處理日期型或日期時(shí)間型數(shù)據(jù)的函數(shù)。1.系統(tǒng)日期和時(shí)間函數(shù)格式:DATE()TIME()DATETIME()功能:DATE()函數(shù)給出當(dāng)前的系統(tǒng)日期,函數(shù)值為日期型。
TIME()函數(shù)給出當(dāng)前的系統(tǒng)時(shí)間,形式為hh:mm:ss,函數(shù)值為字符型。
DATETIME()函數(shù)給出當(dāng)前的系統(tǒng)日期和時(shí)間,函數(shù)值為日期時(shí)間型。2.求年份、月份和天數(shù)函數(shù)格式:YEAR(<日期型表達(dá)式>|<日期時(shí)間型表達(dá)式>)
MONTH(<日期型表達(dá)式>|<日期時(shí)間型表達(dá)式>)
DAY(<日期型表達(dá)式>|<日期時(shí)間型表達(dá)式>)功能:YEAR()函數(shù)返回日期型表達(dá)式或日期時(shí)間型表達(dá)式所對(duì)應(yīng)的年份值;
MONTH()函數(shù)返回日期型表達(dá)式或日期時(shí)間型表達(dá)式所對(duì)應(yīng)的月份,月份以數(shù)值1~12來表示;
DAY()函數(shù)返回日期型表達(dá)式或日期時(shí)間型表達(dá)式所對(duì)應(yīng)月份里面的天數(shù)。這三個(gè)函數(shù)的返回值都是數(shù)值型。3.求時(shí)、分和秒函數(shù)格式:HOUR(<日期時(shí)間型表達(dá)式>)
MINUTE(<日期時(shí)間型表達(dá)式>)
SEC(<日期時(shí)間型表達(dá)式>)功能:HOUR()函數(shù)返回日期時(shí)間型表達(dá)式所對(duì)應(yīng)的小時(shí)部分(按24小時(shí)制);
MINUTE()函數(shù)返回日期時(shí)間型表達(dá)式所對(duì)應(yīng)的分鐘部分;
SEC()函數(shù)返回日期時(shí)間型表達(dá)式所對(duì)應(yīng)的秒數(shù)部分。例5-18
STORE{^2005-5-1}TOd1STOREDATETIME()TOt1&&假設(shè)當(dāng)前系統(tǒng)日期時(shí)間是:2005.7.20,8:20:37?YEAR(d1),MONTH(d1),DAY(d1)200551?HOUR(t1),MINUTE(t1),SEC(t1)820375.4.4轉(zhuǎn)換函數(shù)
數(shù)據(jù)類型轉(zhuǎn)換函數(shù)的功能是將一種類型的數(shù)據(jù)轉(zhuǎn)換成另一種類型的數(shù)據(jù)。1.將字符轉(zhuǎn)換成ASCII碼函數(shù)格式:ASC(<字符型表達(dá)式>)功能:給出指定字符串最左邊的一個(gè)字符的ASCII碼值。函數(shù)值為數(shù)值型。2.將ASCII碼值轉(zhuǎn)換成字符函數(shù)格式:CHR(<數(shù)值型表達(dá)式>)功能:將數(shù)值型表達(dá)式的值作為ASCII碼,給出所對(duì)應(yīng)的字符。例5-19?ASC([abcdefg]),CHR(65),CHR(97) 97Aa3.將字符串轉(zhuǎn)換成日期或日期時(shí)間函數(shù)格式:CTOD(<字符型表達(dá)式>)
CTOT(<字符型表達(dá)式>)功能:CTOD()函數(shù)將指定的字符串轉(zhuǎn)換成日期型數(shù)據(jù),CTOT()函數(shù)將指定的字符串轉(zhuǎn)換成日期時(shí)間型數(shù)據(jù)。字符型表達(dá)式中的日期部分格式要與系統(tǒng)設(shè)置的日期顯示格式一致,其中的年份可以用4位,也可以用2位。如果用2位,則世紀(jì)值應(yīng)由SETCENTURYTO命令指定。4.將日期或日期時(shí)間轉(zhuǎn)換成字符串函數(shù)格式:DTOC(<日期型表達(dá)式>|<日期時(shí)間型表達(dá)式>[,1])
TTOC(<日期時(shí)間型表達(dá)式>[,1])功能:DTOC()函數(shù)將日期型數(shù)據(jù)或日期時(shí)間型數(shù)據(jù)的日期部分轉(zhuǎn)換為字符型,TTOC()函數(shù)將日期時(shí)間型數(shù)據(jù)轉(zhuǎn)換為字符型。字符串中日期和時(shí)間的格式受系統(tǒng)設(shè)置的影響。對(duì)DTOC()函數(shù)來說,若選用1,結(jié)果為yyyymmdd格式。對(duì)TTOC()來說,若選用1,結(jié)果為yyyymmddhhmmss格式。例5-20SETDATETOYMD SETCENTURYON s1=[2005-8-20]s2=[2004-8-20] s3=[2005-8-20,8:30:35]?CTOD(s1)-CTOD(s2),YEAR(CTOT(s3)),SEC(CTOT(s3)) 365200535STORE{^2005-5-1}TOd1?[日期是]+DTOC(d1)
日期是2005/05/01 ?[日期是]+DTOC(d1,1)
日期是200505015.將數(shù)值轉(zhuǎn)換成字符串函數(shù)格式:STR(<數(shù)值型表達(dá)式1>[,<數(shù)值型表達(dá)式2>[,<數(shù)值型表達(dá)式3>]])功能:將<數(shù)值型表達(dá)式1>的值轉(zhuǎn)換成字符串,轉(zhuǎn)換時(shí)根據(jù)需要自動(dòng)進(jìn)行四舍五入。轉(zhuǎn)換后字符串的長(zhǎng)度由<數(shù)值型表達(dá)式2>決定,保留的小數(shù)位數(shù)由<數(shù)值表達(dá)式3>決定。省略<數(shù)值表達(dá)式3>時(shí),轉(zhuǎn)換后將無小數(shù)部分。省略<數(shù)值表達(dá)式2>和<數(shù)值表達(dá)式3>時(shí),字符串長(zhǎng)度默認(rèn)為10,無小數(shù)部分。如果<數(shù)值表達(dá)式2>小于<數(shù)值型表達(dá)式1>的整數(shù)位數(shù),返回指定長(zhǎng)度個(gè)數(shù)星號(hào)(*),表示出錯(cuò)。6.將字符串轉(zhuǎn)換成數(shù)值函數(shù)格式:VAL(<字符型表達(dá)式>)功能:將由數(shù)字、正負(fù)號(hào)、小數(shù)點(diǎn)組成的字符串轉(zhuǎn)換為數(shù)值。若字符串內(nèi)出現(xiàn)非數(shù)字字符,那么只轉(zhuǎn)換前面部分;若字符串的首字符不是數(shù)字符號(hào),則返回?cái)?shù)值零,前導(dǎo)空格不影響轉(zhuǎn)換。例5-21STORE-1234.567TOx?STR(x,10,3),STR(x,8,2),STR(x,6),STR(x,4)#-1234.567-1234.57#-1235****(#表示空格)STORE[-123]TOySTORE[A23]TOzSTORE[5C89]TOp?VAL(y),VAL(z),VAL(p)-123.000.005.005.4.5測(cè)試函數(shù)
在數(shù)據(jù)庫(kù)操作過程中,用戶需要了解數(shù)據(jù)對(duì)象的類型、狀態(tài)等屬性,VisualFoxPro提供相關(guān)的測(cè)試函數(shù),使用戶能夠準(zhǔn)確地獲取操作對(duì)象的相關(guān)屬性。1.?dāng)?shù)據(jù)類型測(cè)試函數(shù)格式:VARTYPE(<表達(dá)式>[,<邏輯表達(dá)式])功能:測(cè)試表達(dá)式的數(shù)據(jù)類型,返回用字母代表的數(shù)據(jù)類型。函數(shù)值為字符型。未定義或錯(cuò)誤的表達(dá)式返回字母U。若表達(dá)式是一個(gè)數(shù)組,則根據(jù)第一個(gè)數(shù)組元素的類型返回字符。若表達(dá)式的運(yùn)算結(jié)果是NULL值,則根據(jù)函數(shù)中邏輯表達(dá)式的值決定是否返回表達(dá)式的類型。具體規(guī)則是:如果邏輯表達(dá)式為.T.,則返回表達(dá)式的原數(shù)據(jù)類型。如果邏輯表達(dá)式為.F.或省略,則返回X,表明表達(dá)式的運(yùn)算結(jié)果是NULL值。2.值域測(cè)試函數(shù)格式:BETWEEN(<被測(cè)試表達(dá)式>,<下限表達(dá)式>,<上限表達(dá)式>)功能:判斷<被測(cè)試表達(dá)式>的值是否介于相同數(shù)據(jù)類型的<下限表達(dá)式>和<上限表達(dá)式>值之間。BETWEEN()首先計(jì)算表達(dá)式的值,如果一個(gè)字符、數(shù)值、日期表達(dá)式的值介于兩個(gè)相同類型表達(dá)式的值之間,即被測(cè)表達(dá)式的值大于或等于下限表達(dá)式的值,小于或者等于上限表達(dá)式的值,BETWEEN()將返回.T.,否則返回.F.。例5-22?VARTYPE(DATE()),VARTYPE($100),VARTYPE([abc
d]),VARTYPE(3<>2)DYCL?BETWEEN(45,37,45),BETWEEN([K],[L],[P]) .T..F.3.條件測(cè)試函數(shù)格式:IIF(<邏輯型表達(dá)式>,<表達(dá)式1>,<表達(dá)式2>)功能:若邏輯型表達(dá)式的值為.T.,函數(shù)值為<表達(dá)式l>的值,否則為<表達(dá)式2>的值。例5-23x=9 y=IIF(SQRT(x)=4,x**2,x-5) ?y 4
這里,由于表達(dá)式SQRT(x)=4返回的是邏輯假值,故IIF()函數(shù)的返回值是x-5,即4。4.空值(NULL值)測(cè)試函數(shù)格式:ISNULL(<表達(dá)式>)功能:判斷一個(gè)表達(dá)式的運(yùn)算結(jié)果是否為NULL值,若是NULL值返回邏輯真.T.,否則返回邏輯假.F.。5.“空”值測(cè)試函數(shù)格式:EMPTY(<表達(dá)式>)功能:根據(jù)指定表達(dá)式的運(yùn)算結(jié)果是否為“空”值,返回邏輯真.T.或邏輯假.F.。首先要注意,這里所指的“空”值與NULL值是兩個(gè)不同的概念。函數(shù)EMPTY(.NULL.)的返回值為邏輯假.F.。其次,該函數(shù)自變量表達(dá)式的類型除了可以是數(shù)值型之外,還可以是字符型、邏輯型、日期型等類型。不同類型數(shù)據(jù)的“空”值,有不同的規(guī)定,VisualFoxPro將各種數(shù)據(jù)類型空值規(guī)定如下:數(shù)值型數(shù)據(jù)為0;字符型數(shù)據(jù)為空格、空串、回車、換行;日期型數(shù)據(jù)為空;邏輯型數(shù)據(jù)為.F.。例5-24STORE.F.TOx1 STORESPACE(8)TOx2 STORE.NULL.TOx3?EMPTY(x1),EMPTY(x2),EMPTY(x3),ISNULL(x1),ISNULL(x3) .T..T..F..F..T.6.表頭測(cè)試函數(shù)格式:BOF([<工作區(qū)號(hào)>|<表別名>])功能:測(cè)試指定或當(dāng)前工作區(qū)的記錄指針是否指向表頭,若指向表頭,函數(shù)值返回邏輯真.T.,否則返回邏輯假.F.。表頭是指第一條記錄前面的位置。<工作區(qū)號(hào)>用于指定工作區(qū),<表別名>為工作區(qū)的別名或在該工作區(qū)上打開的表的別名。當(dāng)<工作區(qū)號(hào)>和<別名>缺省時(shí),默認(rèn)為當(dāng)前工作區(qū)。若在指定工作區(qū)上沒有打開表文件,函數(shù)返回邏輯假.F.。若表文件中不包含任何
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年萊蕪下載貨運(yùn)從業(yè)資格證模擬考試系統(tǒng)試題
- 單位空調(diào)安裝合同范本
- 刑法中勞務(wù)合同范本
- 刊物設(shè)計(jì)制作合同范本
- 寫好運(yùn)輸合同范本
- 農(nóng)戶貸款合伙經(jīng)營(yíng)合同范本
- 企業(yè)重組收購(gòu)合同范本
- 供熱設(shè)備買賣合同范本
- 代理銀行開戶合同范本
- 代服務(wù)合同范本
- 2024改性瀝青路面施工技術(shù)規(guī)范
- 九型人格與親子教育課件
- 2025屆高校畢業(yè)生公開招聘工作人員報(bào)名登記表
- DB34∕T 2290-2022 水利工程質(zhì)量檢測(cè)規(guī)程
- GB/T 44399-2024移動(dòng)式金屬氫化物可逆儲(chǔ)放氫系統(tǒng)
- 薛崗小學(xué)反邪教工作計(jì)劃
- 某住宅小區(qū)物業(yè)服務(wù)投標(biāo)書范本
- 2024-2030年中國(guó)高空外墻清洗行業(yè)市場(chǎng)發(fā)展趨勢(shì)與前景展望戰(zhàn)略分析報(bào)告
- 2024年遼寧省中考生物試卷(含答案與解析)
- 醫(yī)院殯葬服務(wù)管理制度
- 煤礦自救互救知識(shí)考試復(fù)習(xí)題庫(kù)(含答案)
評(píng)論
0/150
提交評(píng)論