VISUALFOXPRO數(shù)據(jù)與數(shù)據(jù)運(yùn)算課件_第1頁
VISUALFOXPRO數(shù)據(jù)與數(shù)據(jù)運(yùn)算課件_第2頁
VISUALFOXPRO數(shù)據(jù)與數(shù)據(jù)運(yùn)算課件_第3頁
VISUALFOXPRO數(shù)據(jù)與數(shù)據(jù)運(yùn)算課件_第4頁
VISUALFOXPRO數(shù)據(jù)與數(shù)據(jù)運(yùn)算課件_第5頁
已閱讀5頁,還剩93頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

VisualFoxPro數(shù)據(jù)與數(shù)據(jù)運(yùn)算

(第四章)數(shù)據(jù)類型數(shù)組常量和變量表達(dá)式與運(yùn)算符函數(shù)VisualFoxPro數(shù)據(jù)與數(shù)據(jù)運(yùn)算

(第四章)數(shù)據(jù)類型數(shù)1數(shù)據(jù)記錄客觀事物屬性的值,通常分為不同的數(shù)據(jù)類型,數(shù)據(jù)類型是數(shù)據(jù)的基本屬性.VisualFoxPro中提供了多種數(shù)據(jù)類型的數(shù)據(jù),數(shù)據(jù)類型一旦被定義,就確定了他的存儲方式和使用方式.VisualFoxPro提供了以下幾種數(shù)據(jù)類型:4.1數(shù)據(jù)類型數(shù)據(jù)記錄客觀事物屬性的值,通常分為不同的數(shù)據(jù)類型,數(shù)據(jù)類型是2類型說明數(shù)值型浮點(diǎn)型雙精度型整型貨幣型字符型日期型日期時間型邏輯型備注型通用型類型說明數(shù)值型浮點(diǎn)型雙精度型整型貨幣型字符型日期型日期時間型3常量是指在程序運(yùn)行過程中始終保持不變的數(shù)據(jù)。4.2常量和變量變量常量變量是在程序運(yùn)行的不同時刻,其值會發(fā)生改變的量常量是指在程序運(yùn)行過程中始終保持不變的數(shù)據(jù)。4.2常量和4常量包括備注型和通用型以外的所有數(shù)據(jù)類型,主要有:1.數(shù)值型常量由數(shù)字、小數(shù)點(diǎn)、正負(fù)號組成,數(shù)據(jù)最大精度為16位有效數(shù)據(jù);數(shù)據(jù)最大長度為20位,其中小數(shù)點(diǎn)占1位。2.字符型常量字符型常量是用定界符界定的一串字符。常用的定界符有單引號‘’、雙引號“”、和方括號[]等。如果定界符成為常量的組成部分,則應(yīng)使用另外的定界符。字符型常量最大長度為254位。4.2.1常量常量包括備注型和通用型以外的所有數(shù)據(jù)類型,主要有:4.2.153.日期型與日期時間型常量日期型與日期時間型常量是用{}括起來的一個包括日期和時間的數(shù)據(jù),其有效性取決于格式的設(shè)置??盏臅r間值可用{/:}表示。4.邏輯型常量邏輯型常量只有真假兩個值。用.T.或.t.、.Y.或.y.表示邏輯值為真,用.F.或.f.、.N.或.n.表示邏輯值為假。字母兩邊的英文句點(diǎn)不能省略。5.貨幣型常量貨幣型常量用于表示貨幣值。使用時應(yīng)加上貨幣符號。3.日期型與日期時間型常量6在VisualFoxPro中,常用的變量類型有:內(nèi)存變量、字段變量、數(shù)組變量和系統(tǒng)變量。內(nèi)存變量是獨(dú)立于數(shù)據(jù)庫以外,存儲在內(nèi)存中的臨時變量。它通常用于存放程序運(yùn)行過程中所需要的原始數(shù)據(jù)、中間結(jié)果以及最終結(jié)果。內(nèi)存變量的數(shù)據(jù)類型由它所保存的數(shù)據(jù)的類型決定。當(dāng)用戶退出VisualFoxPro時,內(nèi)存變量將自動消失。需要注意的是:當(dāng)內(nèi)存變量與字段同名時,若要使用內(nèi)存變量,那么要在引用的內(nèi)存變量名稱之前添加“M.”。4.2.2變量在VisualFoxPro中,常用的變量類型有:內(nèi)存變量、7字段變量是用戶在定義表結(jié)構(gòu)時所定義的字段名,它是一種多值變量。數(shù)組變量是一種特殊的內(nèi)存變量。它是指一組有序的數(shù)據(jù)的集合,數(shù)組中的各元素稱為數(shù)組元素。系統(tǒng)變量是VisualFoxPro建立并維護(hù)的內(nèi)存變量。這些變量的名稱由系統(tǒng)定義,并且以下劃線“_”開頭。變量的類型與常量類型相同。每一個變量的具體類型取決于其被賦予的值,因此在不同時刻,一個變量可以存放不同類型的數(shù)據(jù)。這里我們將主要討論內(nèi)存變量。字段變量是用戶在定義表結(jié)構(gòu)時所定義的字段名,它是一種多值變量81.使用STORE命令為內(nèi)存變量賦值命令格式:STOREeExpressionTOVarNameList|ArrayNameList命令功能:該命令用于為內(nèi)存變量或數(shù)組變量賦值。命令說明:(1)eExpression參數(shù)是一個表達(dá)式。該表達(dá)式可以由常量、變量、函數(shù)和運(yùn)算符組成。該命令將表達(dá)式的值賦予內(nèi)存變量或數(shù)組變量。(2)VarNameList參數(shù)是內(nèi)存變量列表。內(nèi)存變量列表中的內(nèi)存變量應(yīng)用逗號分隔。該命令可以同時為多個內(nèi)存變量賦值。(3)ArrayNameList參數(shù)是數(shù)組變量列表。數(shù)組變量列表中的數(shù)組變量應(yīng)用逗號分隔。(4)該命令可以同時為多個內(nèi)存變量或數(shù)組變量賦值?!纠縮tore3*4toa1,a21.使用STORE命令為內(nèi)存變量賦值92.直接為內(nèi)存變量賦值使用“=”可以直接為內(nèi)存變量賦值?!纠縝1=3將b1賦值3;b2=b1+2將b1加2后的值賦給b2,此時b2等于5;b2=b2+3將b2加3后的值再賦給b2,此時b2等于8。說明:一個變量的值可以不斷變化,最終結(jié)果是它最后一次的賦值。3.顯示內(nèi)存變量可以使用DISPLAYMEMORY命令或LISTMEMORY命令來查看已定義的變量。命令格式:DISPLAYMEMORY或LISTMEMORY命令功能:該命令用于顯示已定義的變量。2.直接為內(nèi)存變量賦值104.釋放內(nèi)存變量為了節(jié)省存儲空間,變量使用完以后應(yīng)及時釋放,可以使用以下命令之一來釋放存儲空間:l

RELEASEALL命令命令格式:RELEASEALL命令功能:該命令用于釋放全部變量。l

RELEASE<MemVarList>命令命令格式:RELEASE<MemVarList>命令功能:該命令用于釋放指定的內(nèi)存變量。命令說明:MemVarList參數(shù)是內(nèi)存變量列表。4.釋放內(nèi)存變量11l

RELEASEALLLIKE[LIKESkeleton|EXCEPTSkeleton]命令命令格式:RELEASEALL[LIKESkeleton|EXCEPTSkeleton]命令功能:該命令用于釋放與指定模式相匹配的變量。命令說明(1)LIKESkeleton子句用于指定要釋放與指定的模式相匹配的所有變量。Skeleton參數(shù)是含有通配符的模式。通配符“*”可以匹配一個字符串;通配符“?”可以匹配一個字符。(2)EXCEPTSkeleton子句用于指定要釋放除與指定的模式相匹配之外的所有變量。Skeleton參數(shù)是含有通配符的模式。l

RELEASEALLLIKE[LIKESk12l

CLEARMEMORY命令命令格式:CLEARMEMORY命令功能:該命令用于釋放全部變量?!纠縍ELEASEa1,a2‘釋放變量a1,a2RELEASEALLLIKEa*‘釋放以字母a開頭的變量VISUALFOXPRO數(shù)據(jù)與數(shù)據(jù)運(yùn)算課件13數(shù)組是按一定順序排列的一組內(nèi)存變量的集合,數(shù)組中的變量稱為數(shù)組元素。數(shù)組必須先定義后使用。命令格式DIMENSIONArrayName1(nRows1[,nColumns1])[,ArrayName2(nRows2[,nColumns2])]...或DECLAREArrayName1(nRows1[,nColumns1])[,ArrayName2(nRows2[,nColumns2])]...命令功能:該命令用于定義一維或二維數(shù)組。3數(shù)組數(shù)組是按一定順序排列的一組內(nèi)存變量的集合,數(shù)組中的變量稱為數(shù)14命令說明:(1)DIMENSION命令和DECLARE命令可以一次定義多個數(shù)組。(2)只設(shè)置nRows參數(shù)時,定義一維數(shù)組;同時設(shè)置nRows和nColumns參數(shù)時,定義二維數(shù)組。(3)系統(tǒng)規(guī)定nRows和nColumns參數(shù)的下界為1。(4)數(shù)組元素可以包含各種類型的數(shù)據(jù),第一次定義時被賦值為.F.?!纠緿IMENSIONA(3),B(2,3)命令說明:15表達(dá)式是指用運(yùn)算符將常量、變量、字段或函數(shù)連接起來的有意義的式子。其類型由表達(dá)式最終計算結(jié)果的數(shù)據(jù)類型決定,主要有:數(shù)值型、字符型、日期型、關(guān)系型、邏輯型。運(yùn)算符包括:算術(shù)運(yùn)算符、字符運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符。不同表達(dá)式使用的運(yùn)算符不同,但運(yùn)算符兩邊的數(shù)據(jù)類型必須相同,否則將導(dǎo)致因數(shù)據(jù)類型不匹配而出錯。4-3表達(dá)式與運(yùn)算符數(shù)值表達(dá)式日期表達(dá)式字符表達(dá)式關(guān)系表達(dá)式邏輯表達(dá)式表達(dá)式是指用運(yùn)算符將常量、變量、字段或函數(shù)連接起來的有意義的16數(shù)值表達(dá)式是由算術(shù)運(yùn)算符將常量、變量、字段或函數(shù)連接起來的式子,其結(jié)果仍為數(shù)值型數(shù)據(jù)。算術(shù)運(yùn)算符有:+、-、*、/、**或^、優(yōu)先級為:**(^)、*、/、+、-同一優(yōu)先級的按從左到右計算。【例】?(3*4+SQRT(25)/5)*4‘結(jié)果為524.3.1數(shù)值表達(dá)式數(shù)值表達(dá)式是由算術(shù)運(yùn)算符將常量、變量、字段或函數(shù)連接起來的式17字符表達(dá)式是由字符運(yùn)算符將常量、變量、字段或函數(shù)連接起來的式子,其結(jié)果仍為字符型數(shù)據(jù)。在字符運(yùn)算符兩邊的數(shù)據(jù)必須是字符型數(shù)據(jù)。字符運(yùn)算符有“+”和“-”兩種。(1)直接連接(+)即用“+”將兩個或多個字符串首尾連接形成一個新的字符串。(2)去空連接(-)即用“-”將兩個或多個字符串相連接。如果前一個字符串尾部有空格,則將此空格移到后一個字符串的尾部?!纠?“ABC”+“DEF”=“ABCDEF”?“ABC”-“DEF”=“ABCDEF”4.3.2字符表達(dá)式字符表達(dá)式是由字符運(yùn)算符將常量、變量、字段或函數(shù)連接起來的式18日期表達(dá)式是由+、-運(yùn)算符將日期連接起來的表達(dá)式,其結(jié)果仍為日期型數(shù)據(jù)?!纠?{^04/03/99}+20‘結(jié)果為{04/23/99}?{^04/03/99}-20‘結(jié)果為{03/14/99}?{^04/03/99}-{^03/14/99}‘結(jié)果為20(兩日期相距的天數(shù))需要注意的是:兩個日期值相加是無意義的。4.3.3日期表達(dá)式日期表達(dá)式是由+、-運(yùn)算符將日期連接起來的表達(dá)式,其結(jié)果仍為19關(guān)系表達(dá)式是由關(guān)系運(yùn)算符將數(shù)值表達(dá)式、字符表達(dá)式、日期表達(dá)式連接起來的表達(dá)式,結(jié)果為邏輯真和邏輯假,分別用.T.和.F.表示。關(guān)系運(yùn)算符有:>、<、>=、<=、<>(!=、#)、=、==、$說明:(1)=與==不完全相同。前者稱為普通比較,后者稱為精確比較。當(dāng)環(huán)境設(shè)定為SETEXACTON時,二者并無區(qū)別;當(dāng)環(huán)境設(shè)定為SETEXACTOFF時,結(jié)果是不同的。比較時,使用右字符串去比較左字符串。當(dāng)右字符串比較完,則比較結(jié)束。如果此時的比較結(jié)果相同,則=比較的值為.T.,而不管左字符串是否結(jié)束;相反,==則要求左右必須完全一致,結(jié)果才為.T.?!纠?“abcde”=“abc”當(dāng)設(shè)置了SETEXACTOFF時,上述關(guān)系表達(dá)式結(jié)果為.T.當(dāng)設(shè)置了SETEXACTON時,上述關(guān)系表達(dá)式結(jié)果為.F.4.3.4關(guān)系表達(dá)式關(guān)系表達(dá)式是由關(guān)系運(yùn)算符將數(shù)值表達(dá)式、字符表達(dá)式、日期表達(dá)式20(2)比較大小時,日期早的日期型數(shù)據(jù)小于日期晚的日期型數(shù)據(jù);字符型數(shù)據(jù)從左到右依次按其ASCII碼值比較。(3)字符串包含運(yùn)算符“$”用于比較左字符串是否存在于右字符串中。如果存在,則為.T.,反之為.F.?!纠?“王”$“王紅”‘結(jié)果為.T.(2)比較大小時,日期早的日期型數(shù)據(jù)小于日期晚的日期型數(shù)據(jù);21邏輯表達(dá)式是由邏輯運(yùn)算符將關(guān)系表達(dá)式連接起來的表達(dá)式,結(jié)果為邏輯真和邏輯假。邏輯運(yùn)算符有:.NOT.、.AND.和.OR.。優(yōu)先級別依此是:.NOT.、.AND.、.OR.。運(yùn)算規(guī)則為:使用.NOT.運(yùn)算的表達(dá)式為假,則邏輯表達(dá)式的值為真。使用.AND.連接的兩個表達(dá)式的值同時為真,邏輯表達(dá)式的值為真;使用.OR.連接的兩個表達(dá)式的值,只要有一個為真,則邏輯表達(dá)式的值為真。4.3.5邏輯表達(dá)式邏輯表達(dá)式是由邏輯運(yùn)算符將關(guān)系表達(dá)式連接起來的表達(dá)式,結(jié)果為22【例】8>3.and.8<10 “a”>“c”.or.“a”<“c” .not.5<6【例】已知某28歲女職工工資為600元?NOT.(性別=“女”)結(jié)果為.F.?性別=“女”.AND.年齡>=28結(jié)果為.T.?性別=“女”.OR.年齡<28結(jié)果為.T.4.3.5邏輯表達(dá)式【例】8>3.and.8<104.3.5邏輯表達(dá)式23VisualFoxPro提供了大量的函數(shù),按返回值的類型或功能主要分為以下幾類。4-4函數(shù)數(shù)值型函數(shù)日期函數(shù)字符型函數(shù)轉(zhuǎn)換函數(shù)測試函數(shù)VisualFoxPro提供了大量的函數(shù),按返回值的類型或24(1)絕對值函數(shù)格式:ABS(<數(shù)值表達(dá)式>)功能:求數(shù)值表達(dá)式的絕對值。【例】?ABS(-12.34)‘結(jié)果為12.34(2)最大值函數(shù)格式:MAX(<數(shù)值表達(dá)式1>,<數(shù)值表達(dá)式2>)功能:計算數(shù)值表達(dá)式的值,取較大者?!纠?MAX(5*4,60/2)‘結(jié)果為302.4.1數(shù)值型函數(shù)(1)絕對值函數(shù)2.4.1數(shù)值型函數(shù)25(3)最小值函數(shù)格式:MIN(<數(shù)值表達(dá)式1>,<數(shù)值表達(dá)式2>)功能:計算數(shù)值表達(dá)式的值,取較小者。(4)平方根函數(shù)格式:SQRT(<數(shù)值表達(dá)式>)功能:計算數(shù)值表達(dá)式的平方根。【例】?SQRT(25*4)結(jié)果為10(3)最小值函數(shù)26(5)指數(shù)函數(shù)格式:EXP(<數(shù)值表達(dá)式>)功能:計算以e為底的指數(shù)冪。【例】?EXP(2*2)‘結(jié)果為54.60(6)對數(shù)函數(shù)格式:LOG(<數(shù)值表達(dá)式>)功能:計算數(shù)值表達(dá)式的自然對數(shù)。【例】?LOG(54.60)‘結(jié)果為4.00(5)指數(shù)函數(shù)27(7)四舍五入函數(shù)格式:ROUND(<數(shù)值表達(dá)式>,<保留小數(shù)位數(shù)>)功能:計算數(shù)值表達(dá)式的值,根據(jù)保留位數(shù)進(jìn)行四舍五入。如果保留小數(shù)位數(shù)為正數(shù)n,則對小數(shù)點(diǎn)后n+1位四舍五入,如果保留小數(shù)位數(shù)為負(fù)數(shù)n,則對小數(shù)點(diǎn)前n位四舍五入?!纠?ROUND(123.34567,3)‘結(jié)果為123.346?ROUND(123.34567,-2)‘結(jié)果為100(7)四舍五入函數(shù)28(8)取整函數(shù)格式:INT(<數(shù)值表達(dá)式>)功能:計算數(shù)值表達(dá)式的值,取整數(shù)部分。【例】?INT(-4.68)‘結(jié)果為-4(9)求模函數(shù)格式:MOD(<數(shù)值表達(dá)式1>,<數(shù)值表達(dá)式2>)功能:求出<數(shù)值表達(dá)式1>除以<數(shù)值表達(dá)式2>的得到的余數(shù).【例】?MOD(0,35) ?MOD(15,4) ?MOD(15,-10) (8)取整函數(shù)29字符型函數(shù)主要對字符型數(shù)據(jù)進(jìn)行運(yùn)算。(1)查找子串函數(shù)格式:AT(<字符表達(dá)式1>,<字符表達(dá)式2>,[<數(shù)值表達(dá)式n>])功能:查找字符表達(dá)式1在字符表達(dá)式2中的起始位置。如果有數(shù)值表達(dá)式n,則確定字符型表達(dá)式1在字符型表達(dá)式2中的第n次出現(xiàn)的起始位置;如果未指明數(shù)值表達(dá)式n,則確定第一次出現(xiàn)的起始位置;如果字符表達(dá)式1不在字符表達(dá)式2中,則返回值為0?!纠?AT(“A”,“BCDE”)‘結(jié)果為0?AT(“A”,“ABADE”)‘結(jié)果為1?AT(“A”,“ABCADE”,2)‘結(jié)果為44.4.2字符型函數(shù)字符型函數(shù)主要對字符型數(shù)據(jù)進(jìn)行運(yùn)算。4.4.2字符型函數(shù)30(2)截取子串函數(shù)格式:SUBSTR(<字符表達(dá)式>,<起始位置>,[<長度>])功能:從指定的起始位置開始,在字符表達(dá)式中截取指定長度的字符串。說明:假設(shè)起始位置為m,長度為n。若省略n,則從m開始截取以后的所有字符串;若n大于從m開始的字符串長度,則從m開始截取以后的所有字符串;若m大于字符表達(dá)式的長度,則截取的字符串為空白字符串。?SUBSTR(“HARDWORK”,3,4)‘結(jié)果為“RDWO”?SUBSTR(“HARDWORK”,2)‘結(jié)果為“ARDWORK”?SUBSTR(“HARDWORK”,3,9)‘結(jié)果為“RDWORK”?SUBSTR(“HARDWORK”,9,5)‘結(jié)果為“”(2)截取子串函數(shù)31(3)左截取子串函數(shù)格式:LEFT(<字符表達(dá)式>,<數(shù)值表達(dá)式>)功能:從字符表達(dá)式左邊開始,截取<數(shù)值表達(dá)式>指定長度的字符串。【例】?LEFT(“HARDWORK”,3)‘結(jié)果為“HAR”(4)右截取子串函數(shù)格式:RIGHT(<字符表達(dá)式>,<數(shù)值表達(dá)式>)功能:從字符表達(dá)式右邊開始向左截取<數(shù)值表達(dá)式>指定長度的字符串?!纠?RIGHT(“HARDWORK”,3)‘結(jié)果為“ORK”(5)生成空字符串函數(shù)

格式:SPACE(<數(shù)值表達(dá)式>)【例】?SPACE(3)‘結(jié)果為“”(3)左截取子串函數(shù)32(6)重復(fù)字符串函數(shù)格式:REPLICATE(<字符表達(dá)式>,<數(shù)值表達(dá)式>)功能:將字符表達(dá)式重復(fù)指定的次數(shù)。【例】?REPLICATE(“**”,3)‘結(jié)果為“******”(7)字符串長度函數(shù)格式:LEN(<字符表達(dá)式>)功能:求字符串的長度(包括空格)?!纠?LEN(“howareyou”)‘結(jié)果為11(6)重復(fù)字符串函數(shù)33(8)字符串替換函數(shù)格式:STUFF(<字符表達(dá)式1>,<起始位置>,<字符個數(shù)>,<字符表達(dá)式2>)功能:從指定的起始位置開始,用字符表達(dá)式2替換字符表達(dá)式1中指定個數(shù)的字符串。說明:若<字符表達(dá)式2>的長度大于起始位置以后的字符串個數(shù),則替換起始位置以后的所有字符串。替換與被替換的字符的長度無關(guān)。【例】?STUFF(“computer”,3,4,“abc”)‘結(jié)果為“coabcer”?STUFF(“computer”,3,1,“abc”)‘結(jié)果為“coabcputer”?STUFF(“computer”,3,4,“”)‘結(jié)果為“coer”(8)字符串替換函數(shù)34(9)宏替換函數(shù)&格式:&(字符型變量名)[.]功能:&函數(shù)用于代換一個字符型變量的內(nèi)容,如果宏替換函數(shù)與后面的字符間無空格分界時,宏替換函數(shù)后面應(yīng)加“.”。宏替換函數(shù)可以嵌套?!纠縎tore‘HELLO’toh1 ?&h1(10)刪除字符串尾部空格函數(shù)格式:RTRIM(<字符表達(dá)式>)(9)宏替換函數(shù)&35(11)刪除字符串首部空格函數(shù)格式:RTRIM(<字符表達(dá)式>)(12)刪除字符串首部和尾部空格函數(shù)格式:ALLTRIM(<字符表達(dá)式>)功能:生成指定空格數(shù)的空字符串。(13)大寫變小寫函數(shù)格式:LOWER(<字符表達(dá)式>)(14)小寫變大寫函數(shù)格式:UPPER(<字符表達(dá)式>)(11)刪除字符串首部空格函數(shù)36(1)系統(tǒng)時間函數(shù)格式:TIME()功能:輸出系統(tǒng)當(dāng)前時間。時間格式為HH:MM:SS【例】?TIME()(2)系統(tǒng)日期時間格式:DATE()功能:輸出系統(tǒng)當(dāng)前日期。系統(tǒng)默認(rèn)格式為MDY,可以使用SETDATE命令自行設(shè)定日期輸出格式?!纠縎ETDATETOYMD?DATE()‘假設(shè)當(dāng)前日期為2001/2/17,那么結(jié)果為01/02/174.4.3日期函數(shù)(1)系統(tǒng)時間函數(shù)4.4.3日期函數(shù)37(3)年函數(shù)格式:YEAR(<日期型表達(dá)式>)功能:輸出日期型表達(dá)式的年份?!纠?YEAR(DATE())‘假設(shè)當(dāng)前日期為2001/2/17,那么結(jié)果為2001(4)月函數(shù)格式:MONTH(<日期型表達(dá)式>)功能:輸出日期型表達(dá)式的月份?!纠?MONTH(DATE())‘假設(shè)當(dāng)前日期為2001/2/17,那么結(jié)果為2(5)日函數(shù)格式:DAY(<日期型表達(dá)式>)功能:輸出日期型表達(dá)式的日?!纠?DAY(DATE())‘假設(shè)當(dāng)前日期為2001/2/17,那么結(jié)果為17(3)年函數(shù)38(6)星期函數(shù)格式:DOW(<日期型表達(dá)式>)CDOW(<日期型表達(dá)式>)功能:DOW()返回用數(shù)字1-7表示的星期值;1表示星期天,2表示星期一,……7表示星期六。CDOW()返回星期的英文名稱。【例】?DOW(DATE())‘假設(shè)當(dāng)前日期為2001/2/17,那么結(jié)果為7?CDOW(DATE())‘假設(shè)當(dāng)前日期為2001/2/17,那么結(jié)果為Saturday(6)星期函數(shù)39數(shù)據(jù)的運(yùn)算要求符合數(shù)據(jù)類型一致的原則,因此,若要對不同類型的數(shù)據(jù)進(jìn)行運(yùn)算,那么必須通過轉(zhuǎn)換函數(shù)將其轉(zhuǎn)換為一致的數(shù)據(jù)類型。(1)數(shù)值型轉(zhuǎn)換為字符型函數(shù)格式:STR(<數(shù)值表達(dá)式>[,<長度>][,<小數(shù)位數(shù)>])功能:將數(shù)值表達(dá)式按設(shè)定的長度和小數(shù)位數(shù)轉(zhuǎn)換成字符型數(shù)據(jù)。說明:<長度>為轉(zhuǎn)換后的字符串位數(shù),若<長度>的設(shè)定值大于實際數(shù)值,則轉(zhuǎn)換后的字符串前補(bǔ)“空格”,若<長度>的設(shè)定值小于實際數(shù)值,則用*代替;若<小數(shù)位數(shù)>的設(shè)定值大于實際數(shù)值,則轉(zhuǎn)換后的字符串后補(bǔ)0,若<小數(shù)位數(shù)>的設(shè)定值小于實際數(shù)值,則對小數(shù)四舍五入。小數(shù)點(diǎn)和負(fù)號均占有1位。【例】?STR(123.4567,6,2)‘結(jié)果為123.46?STR(123.4567,9,2)‘結(jié)果為123.46?STR(123.4567,6,3)‘結(jié)果為123.46?STR(123.4567,1,2)‘結(jié)果為*4.4.4轉(zhuǎn)換函數(shù)數(shù)據(jù)的運(yùn)算要求符合數(shù)據(jù)類型一致的原則,因此,若要對不同類型的40(2)字符型轉(zhuǎn)換為數(shù)值型函數(shù)格式:VAL(<字符型表達(dá)式>)功能:將數(shù)字字符串轉(zhuǎn)換為數(shù)值。說明:轉(zhuǎn)換時遇到非數(shù)字字符時停止;若第一個字符就不是數(shù)字,則值為0.00【例】VAL(“123.45AB”)‘結(jié)果為123.45VAL(“A123.45AB”)‘結(jié)果為0.00(3)字符轉(zhuǎn)換為ASCII函數(shù)格式:ASC(<字符型表達(dá)式>)功能:返回字符表達(dá)式第一個字符的ASCII碼值?!纠緼SC(“abc”)‘結(jié)果為97(4)ASCII碼轉(zhuǎn)換為字符函數(shù)格式:CHR(<數(shù)值型表達(dá)式>)功能:將ASCII碼轉(zhuǎn)化為相應(yīng)的字符?!纠緾HR(65)‘結(jié)果為A(5)日期型轉(zhuǎn)換為字符型函數(shù)格式:DTOC(<日期型表達(dá)式>[,1])(2)字符型轉(zhuǎn)換為數(shù)值型函數(shù)41功能:將日期型表達(dá)式轉(zhuǎn)換為字符串。說明:若使用選項[,1],則轉(zhuǎn)換為年月日的形式?!纠?DTOC(DATE())‘假設(shè)當(dāng)前日期為2001/2/17,那么結(jié)果為02/17/01?DTOC(DATE(),1)‘假設(shè)當(dāng)前日期為2001/2/17,那么結(jié)果為20010217(6)字符型轉(zhuǎn)換為日期型函數(shù)格式:CTOD(<字符型表達(dá)式>)功能:將字符型表達(dá)式轉(zhuǎn)換為日期值。【例】?CTOD(“02/17/64”)‘結(jié)果為02/17/64(7)大寫字母轉(zhuǎn)換為小寫字母函數(shù)格式:LOWER(<字符型表達(dá)式>)功能:將字符型表達(dá)式中的大寫字母轉(zhuǎn)換為小寫字母。【例】?LOWER(“AaBbCc”)‘結(jié)果為aabbcc(8)小寫字母轉(zhuǎn)換為大寫字母函數(shù)格式:UPPER(<字符型表達(dá)式>)功能:將字符型表達(dá)式中的小寫字母轉(zhuǎn)換為大寫字母。【例】?UPPER(“AaBbCc”)‘結(jié)果為AABBCC功能:將日期型表達(dá)式轉(zhuǎn)換為字符串。42(1)文件開始測試函數(shù)格式:BOF()功能:測試記錄指針是否指向第一條記錄之前。(2)文件結(jié)束測試函數(shù)格式:EOF()功能:測試記錄指針是否指向最后一條記錄之后。【例】USEGZ?BOF()‘結(jié)果為.f..SKIP–1?BOF()‘結(jié)果為.t.GOBOTTOM?EOF()‘結(jié)果為.f.4.4.5測試函數(shù)(1)文件開始測試函數(shù)4.4.5測試函數(shù)43SKIP?EOF()‘結(jié)果為.t.(3)檢索測試函數(shù)格式:FOUND()功能:測試是否找到符合要求的記錄。【例】USEStudentLOCATEFORName=“高涵”?FOUND()‘如果結(jié)果為.t.,那么說明已找到姓名為“高涵”的學(xué)生DISPLAY(4)記錄號測試函數(shù)格式:RECNO()功能:返回當(dāng)前記錄的記錄號?!纠縐SEStudentGO2?RECNO()‘結(jié)果為2SKIP44(5)記錄個數(shù)測試函數(shù)格式:RECCOUNT(<工作區(qū)>)功能:測試指定工作區(qū)中表的記錄個數(shù)。說明:做過邏輯刪除的記錄也包括在內(nèi)。(6)表名測試函數(shù)格式:DBF(<工作區(qū)>)功能:測試指定工作區(qū)表的文件名。(7)表的別名測試函數(shù)格式:ALIAS(<工作區(qū)>)功能:測試指定工作區(qū)表的別名。(5)記錄個數(shù)測試函數(shù)45(8)工作區(qū)測試函數(shù)格式:SELECT()功能:測試當(dāng)前工作區(qū)的區(qū)號?!纠縎ELECT1USEStudentSELECT2 USEScore?SELECT()‘結(jié)果為2(8)工作區(qū)測試函數(shù)46(9)數(shù)據(jù)類型測試函數(shù)格式:TYPE(<字符表達(dá)式>)功能:測試表達(dá)式的數(shù)據(jù)類型,用大寫字母表示。表達(dá)式需用定界符界定。如果表達(dá)式不存在或有錯誤,則返回值為U?!纠?TYPE(“[abc]”)‘結(jié)果為C?TYPE(“12.34”)‘結(jié)果為N?TYPE(“abc”)‘結(jié)果為U此時將abc做為變量處理,由于未給其賦值,所以做為錯誤或不存在處理。(9)數(shù)據(jù)類型測試函數(shù)47(10)文件測試函數(shù)格式:FILE(<文件名>)功能:測試文件是否存在,返回邏輯值。(11)字母測試函數(shù)格式:ISALPHA(<字符表達(dá)式>)功能:測試字符表達(dá)式是否以字母開頭。(12)小寫字母測試函數(shù)格式:ISLOWER(<字符表達(dá)式>)功能:測試字符表達(dá)式是否以小寫字母開頭。(13)小寫字母測試函數(shù)格式:ISUPPER(<字符表達(dá)式>)功能:測試字符表達(dá)式是否以大寫字母開頭。(10)文件測試函數(shù)48(1)顯示消息對話框函數(shù)格式:MESSAGEBOX(cMessageText[,nDialogBoxType[,cTitleBarText]])(2)顯示系統(tǒng)信息函數(shù)格式:sys(<數(shù)值表達(dá)式>)功能:顯示一個反映當(dāng)前系統(tǒng)狀態(tài)信息的字符串。4.4.7其他函數(shù)(1)顯示消息對話框函數(shù)4.4.7其他函數(shù)49VisualFoxPro數(shù)據(jù)與數(shù)據(jù)運(yùn)算

(第四章)數(shù)據(jù)類型數(shù)組常量和變量表達(dá)式與運(yùn)算符函數(shù)VisualFoxPro數(shù)據(jù)與數(shù)據(jù)運(yùn)算

(第四章)數(shù)據(jù)類型數(shù)50數(shù)據(jù)記錄客觀事物屬性的值,通常分為不同的數(shù)據(jù)類型,數(shù)據(jù)類型是數(shù)據(jù)的基本屬性.VisualFoxPro中提供了多種數(shù)據(jù)類型的數(shù)據(jù),數(shù)據(jù)類型一旦被定義,就確定了他的存儲方式和使用方式.VisualFoxPro提供了以下幾種數(shù)據(jù)類型:4.1數(shù)據(jù)類型數(shù)據(jù)記錄客觀事物屬性的值,通常分為不同的數(shù)據(jù)類型,數(shù)據(jù)類型是51類型說明數(shù)值型浮點(diǎn)型雙精度型整型貨幣型字符型日期型日期時間型邏輯型備注型通用型類型說明數(shù)值型浮點(diǎn)型雙精度型整型貨幣型字符型日期型日期時間型52常量是指在程序運(yùn)行過程中始終保持不變的數(shù)據(jù)。4.2常量和變量變量常量變量是在程序運(yùn)行的不同時刻,其值會發(fā)生改變的量常量是指在程序運(yùn)行過程中始終保持不變的數(shù)據(jù)。4.2常量和53常量包括備注型和通用型以外的所有數(shù)據(jù)類型,主要有:1.數(shù)值型常量由數(shù)字、小數(shù)點(diǎn)、正負(fù)號組成,數(shù)據(jù)最大精度為16位有效數(shù)據(jù);數(shù)據(jù)最大長度為20位,其中小數(shù)點(diǎn)占1位。2.字符型常量字符型常量是用定界符界定的一串字符。常用的定界符有單引號‘’、雙引號“”、和方括號[]等。如果定界符成為常量的組成部分,則應(yīng)使用另外的定界符。字符型常量最大長度為254位。4.2.1常量常量包括備注型和通用型以外的所有數(shù)據(jù)類型,主要有:4.2.1543.日期型與日期時間型常量日期型與日期時間型常量是用{}括起來的一個包括日期和時間的數(shù)據(jù),其有效性取決于格式的設(shè)置。空的時間值可用{/:}表示。4.邏輯型常量邏輯型常量只有真假兩個值。用.T.或.t.、.Y.或.y.表示邏輯值為真,用.F.或.f.、.N.或.n.表示邏輯值為假。字母兩邊的英文句點(diǎn)不能省略。5.貨幣型常量貨幣型常量用于表示貨幣值。使用時應(yīng)加上貨幣符號。3.日期型與日期時間型常量55在VisualFoxPro中,常用的變量類型有:內(nèi)存變量、字段變量、數(shù)組變量和系統(tǒng)變量。內(nèi)存變量是獨(dú)立于數(shù)據(jù)庫以外,存儲在內(nèi)存中的臨時變量。它通常用于存放程序運(yùn)行過程中所需要的原始數(shù)據(jù)、中間結(jié)果以及最終結(jié)果。內(nèi)存變量的數(shù)據(jù)類型由它所保存的數(shù)據(jù)的類型決定。當(dāng)用戶退出VisualFoxPro時,內(nèi)存變量將自動消失。需要注意的是:當(dāng)內(nèi)存變量與字段同名時,若要使用內(nèi)存變量,那么要在引用的內(nèi)存變量名稱之前添加“M.”。4.2.2變量在VisualFoxPro中,常用的變量類型有:內(nèi)存變量、56字段變量是用戶在定義表結(jié)構(gòu)時所定義的字段名,它是一種多值變量。數(shù)組變量是一種特殊的內(nèi)存變量。它是指一組有序的數(shù)據(jù)的集合,數(shù)組中的各元素稱為數(shù)組元素。系統(tǒng)變量是VisualFoxPro建立并維護(hù)的內(nèi)存變量。這些變量的名稱由系統(tǒng)定義,并且以下劃線“_”開頭。變量的類型與常量類型相同。每一個變量的具體類型取決于其被賦予的值,因此在不同時刻,一個變量可以存放不同類型的數(shù)據(jù)。這里我們將主要討論內(nèi)存變量。字段變量是用戶在定義表結(jié)構(gòu)時所定義的字段名,它是一種多值變量571.使用STORE命令為內(nèi)存變量賦值命令格式:STOREeExpressionTOVarNameList|ArrayNameList命令功能:該命令用于為內(nèi)存變量或數(shù)組變量賦值。命令說明:(1)eExpression參數(shù)是一個表達(dá)式。該表達(dá)式可以由常量、變量、函數(shù)和運(yùn)算符組成。該命令將表達(dá)式的值賦予內(nèi)存變量或數(shù)組變量。(2)VarNameList參數(shù)是內(nèi)存變量列表。內(nèi)存變量列表中的內(nèi)存變量應(yīng)用逗號分隔。該命令可以同時為多個內(nèi)存變量賦值。(3)ArrayNameList參數(shù)是數(shù)組變量列表。數(shù)組變量列表中的數(shù)組變量應(yīng)用逗號分隔。(4)該命令可以同時為多個內(nèi)存變量或數(shù)組變量賦值。【例】store3*4toa1,a21.使用STORE命令為內(nèi)存變量賦值582.直接為內(nèi)存變量賦值使用“=”可以直接為內(nèi)存變量賦值。【例】b1=3將b1賦值3;b2=b1+2將b1加2后的值賦給b2,此時b2等于5;b2=b2+3將b2加3后的值再賦給b2,此時b2等于8。說明:一個變量的值可以不斷變化,最終結(jié)果是它最后一次的賦值。3.顯示內(nèi)存變量可以使用DISPLAYMEMORY命令或LISTMEMORY命令來查看已定義的變量。命令格式:DISPLAYMEMORY或LISTMEMORY命令功能:該命令用于顯示已定義的變量。2.直接為內(nèi)存變量賦值594.釋放內(nèi)存變量為了節(jié)省存儲空間,變量使用完以后應(yīng)及時釋放,可以使用以下命令之一來釋放存儲空間:l

RELEASEALL命令命令格式:RELEASEALL命令功能:該命令用于釋放全部變量。l

RELEASE<MemVarList>命令命令格式:RELEASE<MemVarList>命令功能:該命令用于釋放指定的內(nèi)存變量。命令說明:MemVarList參數(shù)是內(nèi)存變量列表。4.釋放內(nèi)存變量60l

RELEASEALLLIKE[LIKESkeleton|EXCEPTSkeleton]命令命令格式:RELEASEALL[LIKESkeleton|EXCEPTSkeleton]命令功能:該命令用于釋放與指定模式相匹配的變量。命令說明(1)LIKESkeleton子句用于指定要釋放與指定的模式相匹配的所有變量。Skeleton參數(shù)是含有通配符的模式。通配符“*”可以匹配一個字符串;通配符“?”可以匹配一個字符。(2)EXCEPTSkeleton子句用于指定要釋放除與指定的模式相匹配之外的所有變量。Skeleton參數(shù)是含有通配符的模式。l

RELEASEALLLIKE[LIKESk61l

CLEARMEMORY命令命令格式:CLEARMEMORY命令功能:該命令用于釋放全部變量?!纠縍ELEASEa1,a2‘釋放變量a1,a2RELEASEALLLIKEa*‘釋放以字母a開頭的變量VISUALFOXPRO數(shù)據(jù)與數(shù)據(jù)運(yùn)算課件62數(shù)組是按一定順序排列的一組內(nèi)存變量的集合,數(shù)組中的變量稱為數(shù)組元素。數(shù)組必須先定義后使用。命令格式DIMENSIONArrayName1(nRows1[,nColumns1])[,ArrayName2(nRows2[,nColumns2])]...或DECLAREArrayName1(nRows1[,nColumns1])[,ArrayName2(nRows2[,nColumns2])]...命令功能:該命令用于定義一維或二維數(shù)組。3數(shù)組數(shù)組是按一定順序排列的一組內(nèi)存變量的集合,數(shù)組中的變量稱為數(shù)63命令說明:(1)DIMENSION命令和DECLARE命令可以一次定義多個數(shù)組。(2)只設(shè)置nRows參數(shù)時,定義一維數(shù)組;同時設(shè)置nRows和nColumns參數(shù)時,定義二維數(shù)組。(3)系統(tǒng)規(guī)定nRows和nColumns參數(shù)的下界為1。(4)數(shù)組元素可以包含各種類型的數(shù)據(jù),第一次定義時被賦值為.F.。【例】DIMENSIONA(3),B(2,3)命令說明:64表達(dá)式是指用運(yùn)算符將常量、變量、字段或函數(shù)連接起來的有意義的式子。其類型由表達(dá)式最終計算結(jié)果的數(shù)據(jù)類型決定,主要有:數(shù)值型、字符型、日期型、關(guān)系型、邏輯型。運(yùn)算符包括:算術(shù)運(yùn)算符、字符運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符。不同表達(dá)式使用的運(yùn)算符不同,但運(yùn)算符兩邊的數(shù)據(jù)類型必須相同,否則將導(dǎo)致因數(shù)據(jù)類型不匹配而出錯。4-3表達(dá)式與運(yùn)算符數(shù)值表達(dá)式日期表達(dá)式字符表達(dá)式關(guān)系表達(dá)式邏輯表達(dá)式表達(dá)式是指用運(yùn)算符將常量、變量、字段或函數(shù)連接起來的有意義的65數(shù)值表達(dá)式是由算術(shù)運(yùn)算符將常量、變量、字段或函數(shù)連接起來的式子,其結(jié)果仍為數(shù)值型數(shù)據(jù)。算術(shù)運(yùn)算符有:+、-、*、/、**或^、優(yōu)先級為:**(^)、*、/、+、-同一優(yōu)先級的按從左到右計算。【例】?(3*4+SQRT(25)/5)*4‘結(jié)果為524.3.1數(shù)值表達(dá)式數(shù)值表達(dá)式是由算術(shù)運(yùn)算符將常量、變量、字段或函數(shù)連接起來的式66字符表達(dá)式是由字符運(yùn)算符將常量、變量、字段或函數(shù)連接起來的式子,其結(jié)果仍為字符型數(shù)據(jù)。在字符運(yùn)算符兩邊的數(shù)據(jù)必須是字符型數(shù)據(jù)。字符運(yùn)算符有“+”和“-”兩種。(1)直接連接(+)即用“+”將兩個或多個字符串首尾連接形成一個新的字符串。(2)去空連接(-)即用“-”將兩個或多個字符串相連接。如果前一個字符串尾部有空格,則將此空格移到后一個字符串的尾部?!纠?“ABC”+“DEF”=“ABCDEF”?“ABC”-“DEF”=“ABCDEF”4.3.2字符表達(dá)式字符表達(dá)式是由字符運(yùn)算符將常量、變量、字段或函數(shù)連接起來的式67日期表達(dá)式是由+、-運(yùn)算符將日期連接起來的表達(dá)式,其結(jié)果仍為日期型數(shù)據(jù)?!纠?{^04/03/99}+20‘結(jié)果為{04/23/99}?{^04/03/99}-20‘結(jié)果為{03/14/99}?{^04/03/99}-{^03/14/99}‘結(jié)果為20(兩日期相距的天數(shù))需要注意的是:兩個日期值相加是無意義的。4.3.3日期表達(dá)式日期表達(dá)式是由+、-運(yùn)算符將日期連接起來的表達(dá)式,其結(jié)果仍為68關(guān)系表達(dá)式是由關(guān)系運(yùn)算符將數(shù)值表達(dá)式、字符表達(dá)式、日期表達(dá)式連接起來的表達(dá)式,結(jié)果為邏輯真和邏輯假,分別用.T.和.F.表示。關(guān)系運(yùn)算符有:>、<、>=、<=、<>(!=、#)、=、==、$說明:(1)=與==不完全相同。前者稱為普通比較,后者稱為精確比較。當(dāng)環(huán)境設(shè)定為SETEXACTON時,二者并無區(qū)別;當(dāng)環(huán)境設(shè)定為SETEXACTOFF時,結(jié)果是不同的。比較時,使用右字符串去比較左字符串。當(dāng)右字符串比較完,則比較結(jié)束。如果此時的比較結(jié)果相同,則=比較的值為.T.,而不管左字符串是否結(jié)束;相反,==則要求左右必須完全一致,結(jié)果才為.T.?!纠?“abcde”=“abc”當(dāng)設(shè)置了SETEXACTOFF時,上述關(guān)系表達(dá)式結(jié)果為.T.當(dāng)設(shè)置了SETEXACTON時,上述關(guān)系表達(dá)式結(jié)果為.F.4.3.4關(guān)系表達(dá)式關(guān)系表達(dá)式是由關(guān)系運(yùn)算符將數(shù)值表達(dá)式、字符表達(dá)式、日期表達(dá)式69(2)比較大小時,日期早的日期型數(shù)據(jù)小于日期晚的日期型數(shù)據(jù);字符型數(shù)據(jù)從左到右依次按其ASCII碼值比較。(3)字符串包含運(yùn)算符“$”用于比較左字符串是否存在于右字符串中。如果存在,則為.T.,反之為.F.。【例】?“王”$“王紅”‘結(jié)果為.T.(2)比較大小時,日期早的日期型數(shù)據(jù)小于日期晚的日期型數(shù)據(jù);70邏輯表達(dá)式是由邏輯運(yùn)算符將關(guān)系表達(dá)式連接起來的表達(dá)式,結(jié)果為邏輯真和邏輯假。邏輯運(yùn)算符有:.NOT.、.AND.和.OR.。優(yōu)先級別依此是:.NOT.、.AND.、.OR.。運(yùn)算規(guī)則為:使用.NOT.運(yùn)算的表達(dá)式為假,則邏輯表達(dá)式的值為真。使用.AND.連接的兩個表達(dá)式的值同時為真,邏輯表達(dá)式的值為真;使用.OR.連接的兩個表達(dá)式的值,只要有一個為真,則邏輯表達(dá)式的值為真。4.3.5邏輯表達(dá)式邏輯表達(dá)式是由邏輯運(yùn)算符將關(guān)系表達(dá)式連接起來的表達(dá)式,結(jié)果為71【例】8>3.and.8<10 “a”>“c”.or.“a”<“c” .not.5<6【例】已知某28歲女職工工資為600元?NOT.(性別=“女”)結(jié)果為.F.?性別=“女”.AND.年齡>=28結(jié)果為.T.?性別=“女”.OR.年齡<28結(jié)果為.T.4.3.5邏輯表達(dá)式【例】8>3.and.8<104.3.5邏輯表達(dá)式72VisualFoxPro提供了大量的函數(shù),按返回值的類型或功能主要分為以下幾類。4-4函數(shù)數(shù)值型函數(shù)日期函數(shù)字符型函數(shù)轉(zhuǎn)換函數(shù)測試函數(shù)VisualFoxPro提供了大量的函數(shù),按返回值的類型或73(1)絕對值函數(shù)格式:ABS(<數(shù)值表達(dá)式>)功能:求數(shù)值表達(dá)式的絕對值。【例】?ABS(-12.34)‘結(jié)果為12.34(2)最大值函數(shù)格式:MAX(<數(shù)值表達(dá)式1>,<數(shù)值表達(dá)式2>)功能:計算數(shù)值表達(dá)式的值,取較大者?!纠?MAX(5*4,60/2)‘結(jié)果為302.4.1數(shù)值型函數(shù)(1)絕對值函數(shù)2.4.1數(shù)值型函數(shù)74(3)最小值函數(shù)格式:MIN(<數(shù)值表達(dá)式1>,<數(shù)值表達(dá)式2>)功能:計算數(shù)值表達(dá)式的值,取較小者。(4)平方根函數(shù)格式:SQRT(<數(shù)值表達(dá)式>)功能:計算數(shù)值表達(dá)式的平方根。【例】?SQRT(25*4)結(jié)果為10(3)最小值函數(shù)75(5)指數(shù)函數(shù)格式:EXP(<數(shù)值表達(dá)式>)功能:計算以e為底的指數(shù)冪?!纠?EXP(2*2)‘結(jié)果為54.60(6)對數(shù)函數(shù)格式:LOG(<數(shù)值表達(dá)式>)功能:計算數(shù)值表達(dá)式的自然對數(shù)?!纠?LOG(54.60)‘結(jié)果為4.00(5)指數(shù)函數(shù)76(7)四舍五入函數(shù)格式:ROUND(<數(shù)值表達(dá)式>,<保留小數(shù)位數(shù)>)功能:計算數(shù)值表達(dá)式的值,根據(jù)保留位數(shù)進(jìn)行四舍五入。如果保留小數(shù)位數(shù)為正數(shù)n,則對小數(shù)點(diǎn)后n+1位四舍五入,如果保留小數(shù)位數(shù)為負(fù)數(shù)n,則對小數(shù)點(diǎn)前n位四舍五入。【例】?ROUND(123.34567,3)‘結(jié)果為123.346?ROUND(123.34567,-2)‘結(jié)果為100(7)四舍五入函數(shù)77(8)取整函數(shù)格式:INT(<數(shù)值表達(dá)式>)功能:計算數(shù)值表達(dá)式的值,取整數(shù)部分?!纠?INT(-4.68)‘結(jié)果為-4(9)求模函數(shù)格式:MOD(<數(shù)值表達(dá)式1>,<數(shù)值表達(dá)式2>)功能:求出<數(shù)值表達(dá)式1>除以<數(shù)值表達(dá)式2>的得到的余數(shù).【例】?MOD(0,35) ?MOD(15,4) ?MOD(15,-10) (8)取整函數(shù)78字符型函數(shù)主要對字符型數(shù)據(jù)進(jìn)行運(yùn)算。(1)查找子串函數(shù)格式:AT(<字符表達(dá)式1>,<字符表達(dá)式2>,[<數(shù)值表達(dá)式n>])功能:查找字符表達(dá)式1在字符表達(dá)式2中的起始位置。如果有數(shù)值表達(dá)式n,則確定字符型表達(dá)式1在字符型表達(dá)式2中的第n次出現(xiàn)的起始位置;如果未指明數(shù)值表達(dá)式n,則確定第一次出現(xiàn)的起始位置;如果字符表達(dá)式1不在字符表達(dá)式2中,則返回值為0。【例】?AT(“A”,“BCDE”)‘結(jié)果為0?AT(“A”,“ABADE”)‘結(jié)果為1?AT(“A”,“ABCADE”,2)‘結(jié)果為44.4.2字符型函數(shù)字符型函數(shù)主要對字符型數(shù)據(jù)進(jìn)行運(yùn)算。4.4.2字符型函數(shù)79(2)截取子串函數(shù)格式:SUBSTR(<字符表達(dá)式>,<起始位置>,[<長度>])功能:從指定的起始位置開始,在字符表達(dá)式中截取指定長度的字符串。說明:假設(shè)起始位置為m,長度為n。若省略n,則從m開始截取以后的所有字符串;若n大于從m開始的字符串長度,則從m開始截取以后的所有字符串;若m大于字符表達(dá)式的長度,則截取的字符串為空白字符串。?SUBSTR(“HARDWORK”,3,4)‘結(jié)果為“RDWO”?SUBSTR(“HARDWORK”,2)‘結(jié)果為“ARDWORK”?SUBSTR(“HARDWORK”,3,9)‘結(jié)果為“RDWORK”?SUBSTR(“HARDWORK”,9,5)‘結(jié)果為“”(2)截取子串函數(shù)80(3)左截取子串函數(shù)格式:LEFT(<字符表達(dá)式>,<數(shù)值表達(dá)式>)功能:從字符表達(dá)式左邊開始,截取<數(shù)值表達(dá)式>指定長度的字符串。【例】?LEFT(“HARDWORK”,3)‘結(jié)果為“HAR”(4)右截取子串函數(shù)格式:RIGHT(<字符表達(dá)式>,<數(shù)值表達(dá)式>)功能:從字符表達(dá)式右邊開始向左截取<數(shù)值表達(dá)式>指定長度的字符串?!纠?RIGHT(“HARDWORK”,3)‘結(jié)果為“ORK”(5)生成空字符串函數(shù)

格式:SPACE(<數(shù)值表達(dá)式>)【例】?SPACE(3)‘結(jié)果為“”(3)左截取子串函數(shù)81(6)重復(fù)字符串函數(shù)格式:REPLICATE(<字符表達(dá)式>,<數(shù)值表達(dá)式>)功能:將字符表達(dá)式重復(fù)指定的次數(shù)?!纠?REPLICATE(“**”,3)‘結(jié)果為“******”(7)字符串長度函數(shù)格式:LEN(<字符表達(dá)式>)功能:求字符串的長度(包括空格)?!纠?LEN(“howareyou”)‘結(jié)果為11(6)重復(fù)字符串函數(shù)82(8)字符串替換函數(shù)格式:STUFF(<字符表達(dá)式1>,<起始位置>,<字符個數(shù)>,<字符表達(dá)式2>)功能:從指定的起始位置開始,用字符表達(dá)式2替換字符表達(dá)式1中指定個數(shù)的字符串。說明:若<字符表達(dá)式2>的長度大于起始位置以后的字符串個數(shù),則替換起始位置以后的所有字符串。替換與被替換的字符的長度無關(guān)?!纠?STUFF(“computer”,3,4,“abc”)‘結(jié)果為“coabcer”?STUFF(“computer”,3,1,“abc”)‘結(jié)果為“coabcputer”?STUFF(“computer”,3,4,“”)‘結(jié)果為“coer”(8)字符串替換函數(shù)83(9)宏替換函數(shù)&格式:&(字符型變量名)[.]功能:&函數(shù)用于代換一個字符型變量的內(nèi)容,如果宏替換函數(shù)與后面的字符間無空格分界時,宏替換函數(shù)后面應(yīng)加“.”。宏替換函數(shù)可以嵌套。【例】Store‘HELLO’toh1 ?&h1(10)刪除字符串尾部空格函數(shù)格式:RTRIM(<字符表達(dá)式>)(9)宏替換函數(shù)&84(11)刪除字符串首部空格函數(shù)格式:RTRIM(<字符表達(dá)式>)(12)刪除字符串首部和尾部空格函數(shù)格式:ALLTRIM(<字符表達(dá)式>)功能:生成指定空格數(shù)的空字符串。(13)大寫變小寫函數(shù)格式:LOWER(<字符表達(dá)式>)(14)小寫變大寫函數(shù)格式:UPPER(<字符表達(dá)式>)(11)刪除字符串首部空格函數(shù)85(1)系統(tǒng)時間函數(shù)格式:TIME()功能:輸出系統(tǒng)當(dāng)前時間。時間格式為HH:MM:SS【例】?TIME()(2)系統(tǒng)日期時間格式:DATE()功能:輸出系統(tǒng)當(dāng)前日期。系統(tǒng)默認(rèn)格式為MDY,可以使用SETDATE命令自行設(shè)定日期輸出格式?!纠縎ETDATETOYMD?DATE()‘假設(shè)當(dāng)前日期為2001/2/17,那么結(jié)果為01/02/174.4.3日期函數(shù)(1)系統(tǒng)時間函數(shù)4.4.3日期函數(shù)86(3)年函數(shù)格式:YEAR(<日期型表達(dá)式>)功能:輸出日期型表達(dá)式的年份?!纠?YEAR(DATE())‘假設(shè)當(dāng)前日期為2001/2/17,那么結(jié)果為2001(4)月函數(shù)格式:MONTH(<日期型表達(dá)式>)功能:輸出日期型表達(dá)式的月份?!纠?MONTH(DATE())‘假設(shè)當(dāng)前日期為2001/2/17,那么結(jié)果為2(5)日函數(shù)格式:DAY(<日期型表達(dá)式>)功能:輸出日期型表達(dá)式的日?!纠?DAY(DATE())‘假設(shè)當(dāng)前日期為2001/2/17,那么結(jié)果為17(3)年函數(shù)87(6)星期函數(shù)格式:DOW(<日期型表達(dá)式>)CDOW(<日期型表達(dá)式>)功能:DOW()返回用數(shù)字1-7表示的星期值;1表示星期天,2表示星期一,……7表示星期六。CDOW()返回星期的英文名稱?!纠?DOW(DATE())‘假設(shè)當(dāng)前日期為2001/2/17,那么結(jié)果為7?CDOW(DATE())‘假設(shè)當(dāng)前日期為2001/2/17,那么結(jié)果為Saturday(6)星期函數(shù)88數(shù)據(jù)的運(yùn)算要求符合數(shù)據(jù)類型一致的原則,因此,若要對不同類型的數(shù)據(jù)進(jìn)行運(yùn)算,那么必須通過轉(zhuǎn)換函數(shù)將其轉(zhuǎn)換為一致的數(shù)據(jù)類型。(1)數(shù)值型轉(zhuǎn)換為字符型函數(shù)格式:STR(<數(shù)值表達(dá)式>[,<長度>][,<小數(shù)位數(shù)>])功能:將數(shù)值表達(dá)式按設(shè)定的長度和小數(shù)位數(shù)轉(zhuǎn)換成字符型數(shù)據(jù)。說明:<長度>為轉(zhuǎn)換后的字符串位數(shù),若<長度>的設(shè)定值大于實際數(shù)值,則轉(zhuǎn)換后的字符串前補(bǔ)“空格”,若<長度>的設(shè)定值小于實際數(shù)值,則用*代替;若<小數(shù)位數(shù)>的設(shè)定值大于實際數(shù)值,則轉(zhuǎn)換后的字符串后補(bǔ)0,若<小數(shù)位數(shù)>的設(shè)定值小于實際數(shù)值,則對小數(shù)四舍五入。小數(shù)點(diǎn)和負(fù)號均占有1位?!纠?STR(123.4567,6,2)‘結(jié)果為123.46?STR(123.4567,9,2)‘結(jié)果為123.46?STR(123.4567,6,3)‘結(jié)果為123.46?STR(123.4567,1,2)‘結(jié)果為*4.4.4轉(zhuǎn)換函數(shù)數(shù)據(jù)的運(yùn)算要求符合數(shù)據(jù)類型一致的原則,因此,若要對不同類型的89(2)字符型轉(zhuǎn)換為數(shù)值型函數(shù)格式:VAL(<字符型表達(dá)式>)功能:將數(shù)字字符串轉(zhuǎn)換為數(shù)值。說明:轉(zhuǎn)換時遇到非數(shù)字字符時停止;若第一個字符就不是數(shù)字,則值為0.00【例】VAL(“123.45AB”)‘結(jié)果為123.45VAL(“A123.45AB”)‘結(jié)果為0.00(3)字符轉(zhuǎn)換為ASCII函數(shù)格

溫馨提示

  • 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

提交評論