仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 885|回复: 8
打印 上一主题 下一主题

[学习教程] MSSQL网页编程之Wml的尺度函数库

[复制链接]
愤怒的大鸟 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:35:50 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
优化的SQL查询算法,有效地提高查询速度尺度|函数6.1WMLScript划定规矩

这些尺度函数库供应一个扩大WMLScript言语的机制,这些特定的函数库必需遵守WMLScript的划定规矩。

撑持的数据格局

上面的WMLScript格局利用于程序的界说当中,如许能纪录程序参数与反转展转值的格局。

Boolean
Integer
Float
String
Invalid

除此以外,假如整数与浮点数参数值格局都能承受的话,则能利用number来纪录参数格局,假如利用的格局是所撑持的格局,则能用any来纪录。

数据格局转换

函数库程序产生毛病的处置体例和WMLScript言语一样。

invalid程序参数会发生invalid的回传值。

程序的参数没法转成所必要利用参数格局,则会发生invalid的回传值。

与程序相干的毛病得出回传一个得当的毛病码,至于这个值就要看每一个程序怎样界说。

6.2Lang函数库

称号:Lang

申明:这个函数库所含的程序同WMLScript言语的中心有很亲切的干系。

abs

程序:abs(value)
申明:回传赐与数的相对值。
假如赐与的数是整数,则回传整数。
假如赐与的数是浮点数,则回传浮点数。
参数:value=数字。
回传值:数字或invalid。
破例情况:vara=-3;
varb=Lang.abs(a);//b=3

min


典范:vara=-3
varb=Lang.abs(a);
varc=Lang.min(a.b);
vard=Lang.min(45、76.3);//d=45(ingteger)
vare=Lang.min(45、76.3);//e=45(ingteger)

max

程序:max(value1,value2)
申明:回传值赐与的两个数之间的较年夜值,回传的值于格局同所选数值的值与格局不异,其拔取的体例以下:
WMLScript运算符数据格局的整数与浮点数转换法例可用来确认数据格局,以便实行对照的举措。
参数:value1=数字
value2=数字
回传值:数字或invalid
破例情况:无
典范:vara=-3;
varb=Lang.abs(a);//b=3
varc=Lang.min(a.b);
vard=Lang.min(45、76.3);//d=45(ingteger)
vare=Lang.min(45、76.3);//e=45(float)

parseInt

程序:parseInt(value)
申明:回传由字符串value所界说的整数值,正当的整数语法由WMLScript数值字符串文法或是近值整数是字所界定,以下为分外的剖析法例:
第一个字符不是由+、-或十进制数字当开首的话,解译停止。
了局:剖析过的字符串反转展转换整数值。
典范:vari=Lang.parseInt("1234");//i=1234
varj=Lang.parseInt("100m/s");//j=100

parseFloat

程序:parseFloat(value)
申明:回传由字符串value所界说的浮点数值,正当的浮点数语法由WMLScript数值字符串文法或是近值整数实字所界定,以下为分外的剖析法例:
第一个字符没法剖析成浮点数表达式,剖析停止。
停止:剖析过的字符串反转展转换成浮点数。
参数:value=字符串
回传值:浮点数或invalid
破例情况:剖析毛病则传回invalid
典范:vara=Lang.parseFloat("123.7Hz");//a=123.7
varb=Lang.parseFloat("7.34e2Hz");//b=7.34e2
varc=Lang.parseFloat("70.0e-2F");//c=70.0e-2
vard=Lang.parseFloat("-1.c");//d=0.1
vare=Lang.parseFloat("100");//e=100.0
varf=Lang.parseFloat("Number:5.5");//f=invalid
varg=Lang.parseFloat("7.3emeters");//g=invalid
varh=Lang.parseFloat("7.3e-m/s");//h=invalid

isInt

程序:isInt(value)
申明:假如各预的值value能利用parseInt(value)转成整数则回传播尔值ture,不然传回false。
参数:value=恣意值
回传值:布尔值或invalid
破例情况:无
典范:vara=Lang.inInt("-123");//ture
vara=Lang.minInt("123.33");//ture
vara=Lang.minInt("string");//false
vara=Lang.minInt("#123");//false
vara=Lang.minInt("invalid");//invalid

isFloat

程序:isFloat(value)
申明:假如各预的值value能利用parseInt(value)转成整数则回传播尔值ture,不然传回false。
参数:value=恣意值
回传值:布尔值或invalid
破例情况:无
典范:vara=Lang.inInt("-123");//ture
vara=Lang.minInt("123.33");//ture
vara=Lang.minInt("string");//false
vara=Lang.minInt("#123");//false
vara=Lang.minInt("invalid");//invalid

maxInt

程序:maxInt()
申明:传回最年夜的整数值。
参数:无
回传值:整数2147483647
破例情况:无
典范:vara=Lang.minInt();

minInt

程序:minInt()
申明:传回最小的整数值
参数:无
回传值:整数-2147483647
破例情况:无
典范:vara=Lang.minInt();

float

程序:float()
申明:假如有撑持浮点数的话传回ture,没有的话传回false。
参数:无
回传值:布尔值
破例情况:无
典范:varfloatsSupported=Lang.float();

exit

程序:exit(value)
申明:停止WMLScript位码的解译然后回到挪用WMLScript解译器者的把持,并回传指定值value,你可使用这个程序来实行由一样平常程序的停止,并且WMLScript位码的实行必需中断。
参数:valre=恣意值
回传值:无,这个程序停止解译
破例情况:无
典范:Lang.exit("Value:"+myVal);//Returnsastring
Lang,exit(invalid);//Returnsinvalid

abort

程序:abort(errorDescription)
申明:中断WMLScript位码的解译然后回到挪用WMLScript解译器者的把持,并回传errorDescription,你能利用这个程序实行不一般的中断,挪用程序者检测到有严峻毛病,WMLScript的实行并须中止。
假如errorDescription的格局为invalid,字符串invalid用取代errorDescription的利用。
参数:errorDescription=字符串
回传值:无,这个程序停止解译
破例情况:无
典范:Lang.abort("Error:"+errVal);//Errorvaluestring

radndom

程序:random(value)
申明:回传一个负数的整数值,也就是说要年夜于或即是零,但必需要小于给定值value,回传值是由近是一般散布所随机拔取的值。
参数:value=整数
回传值:整数或invalid
破例情况:假如value即是0,则程序回传0
假如value小于0,则程序回传invalid
典范:vara=10;
varb=Lang.random(5.1)*a;//b=0..50
varc=Lang.random("string");//c=invalid

reed

程序:seed(alue)
申明:初始化需随机数字按次并回传一个空字符串
假如value为0或正整数,赐与的value则用来初始化,反之则利用随机初始化的值。
假如value为浮点数,则会先利用Float.int()来盘算切实的整数值。
参数:value=整数
回传值:字符串或invalid]
破例情况:无
典范:vara=Lang.reed(123);//a=""
varb=Lang.random(20);//b=0..20
varc=Lang.seed("seed");//c=invalid(randomseed//leftunchanged)

characterSet

程序:characterSet()
申明:回传WMLScript解译器所撑持的字集,回传只是个整数用来纪录由IANA所设定的MIBEnum值,这个只能暗示一切的字集。
参数:无
回传值:整数
破例情况:无
典范:Varcharset=Lang.characterSet();//charset=4forlatinl

6.3Float函数库

称号:Float
申明:这个函数库包括了典范与经常使用的浮点数算术程序。

int

程序:int(value)
申明:回传赐与值的整数部分。
参数:value=数字
回传值:整数或invalid
破例情况:无
典范:vara=3.14;
varb=Float.in(a);//b=3
varc=Float.in(-2.8);//c=-2

floor

程序:floor(value)
申明:回传整数值,这个只需最靠近赐与值但不克不及年夜于它。
假如value已是个整数,其了局就是这个值自己。
参数:value=数字
回传值:整数或invalid
破例情况:无
典范:vara=3.14;
varb=Float.in(a);//b=3
varc=Float.in(-2.8);//c=-3

ceil

程序:ceil(value)
申明:回传一个只需最靠近赐与值但不克不及小于它的整数值。
假如value已是个整数,其了局就是这个值自己。
参数:value=数字
回传值:整数或invalid
破例情况:无
典范:vara=3.14;
varb=Float.in(a);//b=4
varc=Float.in(-2.8);//c=-2

pow

程序:pow(x,y)
申明:回传x的y次方值。
假如x是正数,则y必需为负数。
参数:x=数字
   y=数字
回传值:浮点数或invlid
破例情况:假如x==0并且y<0,则回传invalid
假如x<0并且y不是个整数,则回传invalid
典范:vara=3
varb=Float.pow(a,2);//b=9

round

程序:round(value)
申明:传回最靠近赐与值的整数
若两个整数值跟value靠近的程序相称,则选择对照年夜的数。
若value已是个负数,其了局就是value自己。
参数:value=数字
回传值:整数或invalid
破例情况:无
典范:vara=Float.round(3.5);//a=4
varb=Float.round(-3.5);//b=-3
varc=Float.round(0.5);//c=1
vard=Float.round(-0.5);//d=0

squt

程序:sqrt(value)
申明:传回赐与值value的平方根近似值。
参数:value=浮点数
回传值:浮点数或invalid
破例情况:假如value正数,则回传invlid
典范:vara=4;
varb=Float.squt(a);//b=2.0
varc=Float.squt(5);//c=2.2360679775

maxFloat

程序:maxFloat()
申明:传回IEEE754所撑持的但准浮点数格局中最年夜的浮点数值。
参数:无
回传值:浮点数3.40282347E+38
破例情况:无
典范:vara=Float.maxFloat();

minFloat

程序:minFloat()
申明:传回IEEE754所撑持的但准浮点数格局中最小的浮点数值。
参数:无
回传值:浮点数1.17549435E-38
破例情况:无
典范:vara=Float.minFloat();

6.4string函数库

称号:字符串
申明:这个函数库包括了字符串程序的汇合,一个字符串能够是字符数组,每一个字符都有个索引,字符串的第一个字浮的索引为0,字符串的长度是字符在数组中的数量。

你能利用一些特别的分开标记来界定分歧的字符串,如许你就可以存取这些有分开标记予元素索引所界定出的元素,字符串中第一个元素的索引值为0,每一个字符串分开标记回分开出两个元素,但字符是不克不及用来做分开标记。

一个空格的字符多是以下字符个中之一:

TAB:程度跳格定位(horizontaltabulation)
VT:垂直跳格定位(ertivaltabulation)
FF:跳页(fromfeed)
SP:空格(space)
LF:跳行(linefeed)
CR:回位(carriagereturn)

length

程序:length(string)
申明:传回赐与字符串的长度(字符的数量)。
参数:string=字符串
回传值:整数或invalid
破例情况:无
典范:vara="ABC";
varb=string.length(a);//b=3
varc=string.length("");//c=0
vard=string.length(342);//d=3

isEmpty

程序:isEmpty(string)
申明:假如字符串长度为零则传回布尔值true,反之传回false。
参数:string=字符串
回传值:布尔值或invalid
破例情况:无
典范:vara="Hello;
varb="";
varc=sting.isEmpty(a);//c=false
varc=sting.isEmpty(b);//d=ture
varc=sting.isEmpty(ture);//e=false

charAt

程序:charAt(sting.index)
申明:回传string中index值所指定的字符。
参数:string=字符数
index=数字(回传回index所指定的字符)
回传值:字符串或invalid
破例情况:假如index的值凌驾字符串的局限,则回传空字符串("")
典范:vara="MynameisJoe"
varb=sting.charAt(a,0);//b="M"
varc=sting.charAt(a,100);//c=""
vard=sting.charAt(34.0);//d="3"
vare=sting.charAt(a,"first");//e=invalid

subString

程序:subString(string,startIndex,length)
申明:传回一个新的字符串来取代所赐与的字符串,这个新字符串给定的索引值入手下手,它的长度有所赐与的length决意。
假如startIndex小于0,则会0来看成索引值。
假如length年夜于残剩字符的数量,则lenght会由残剩的字符数来取代。
假如startIndex予lenght是浮点数,则会先利用Float.int()来盘算准确的整数值。
参数:string=字符数
startIndex=数字
lenght=数字
回传值:字符串或invalid
破例情况:假如startIndex年夜于最初的索引值,则回传会空字符串("")
假如lenght<=0,传会空字符串("")
典范:vara="ABCD";
varb=String.subString(a,1,2);//b="BC"
varc=String.subString(a,2,5);//c="CD"
vard=String.subString(1234,0,2);//d="12"

find

程序:find(string,substring)
申明:传会所要寻觅的字符串substring和原始字符串string符合的第一个字符的索引值。
假如没有符合,则传会整数值-1。
两个字符传假如是相称的话,是界说为不切合。
参数:string=字符串
substring=字符串
回传值:整数或invalid
破例情况:无
典范:vara="abcde";
varb=String.find(a,"cd");//b=2
varc=String.find(34.2,"de");//c=-1
vard=String.find(a,"gz");//d=-1
vare=String.find(34,"3");//e=0

replace

程序:eplace(tring,oldSubString,newSubString)
申明:传会新字符串,这个新字符串是由和所赐与字符串string符合的旧字符传oldSubString利用新字符串newSubString字符串加以取代。假如两字符串相称的话,界说为符合。
参数:string=字符串
oldSubString=字符串
newSubString=字符串
回传值:字符串或invalid
破例情况:无
典范:vara="HelloJoe.WhatisupJoe?";
varnewName="Don";
varoldName="Joe";
varc=String.replace(a,oldName,newName);//c="HelloDon.WhatisupDon?"
vard=String.replace(a,oldName,newName);//c="HelloDon.WhatisupDon?"

element

程序:element(string,separator)
申明:回传分开标记separator所分开的字符串string的元素数量,空字符串("")是无效的元素,这暗示了这程序永久不会回传一个小于或即是0得值。
参数:string=字符串
separator=字符串
回传值:整数或invalid
破例情况:假如separator是个空字符串,则回传invalid
典范:vara="MynameisJoe;Age50";
varb=String.elements(a,"");//b=6
varc=String.elements(a,";");//c=3
vard=String.elements("",";");//d=1
vare=String.elements("a","");//e=1
varf=String.elements(";",";");//f=2
varg=String.elements(";;,;",";,");//g=4
separator=;

elementAt

程序:elementAt(string,index,separator)
申明:寻觅字符串string的第index个元素,这些元素是由分开标记separator所加以分隔,并回传绝对应的元素。
假如index值小于0,则回传第一个元素。
假如index值年夜于元素的数量,则回传最初一个元素。
假如字符串为空字符串,则回传空字符串。
假如index值为浮点数,则须先利用Float.int()来盘算出准确的索引值。
参数:string=字符串
index=数字
separator=字符串
回传值:字符串或invalid
破例情况:假如separator是个空字符串,则回传invalid
典范:vara="HelloJoe.WhatisupJoe?";
varb=String.elementAt(a,0,"");//b="My"
varb=String.elementAt(a,14,";");//c=""
varb=String.elementAt(a,1,";");//d="Age50"

removeAt

程序:removeAt(string,index,separator)
申明:将切合索引值index的分开号separator与元素有字符串string中移出,并回传这个新字符串。
假如index值小于0,则回传第一个元素。
假如index值年夜于元素的数量,则回传最初一个元素。
假如字符串为空字符串,则回传空字符串。
假如index值为浮点数,则须先利用Float.int()来盘算出准确的索引值。
参数:string=字符串
element=字符串
index=数字
separator=字符串
回传值:字符串或invalid
破例情况:假如separator是个空字符串,则回传invalid
典范:vara="AA;BCD";
vars="";
varc=String.removeAt(a,1,s);//b="ABCD"
vard=String.removeAt(a,0,";");//c="BCD"
vare=String.removeAt(a,14,";");//d="AA"

replaceAt

程序:replaceAT(string,index,separator)
申明:在特定的index中的元素,利用所赐与的元素element来取代,并回传这个新字符串。
假如index值小于0,则回传第一个元素。
假如index值年夜于元素的数量,则回传最初一个元素。
假如字符串为空字符串,则回传空字符串。
假如index值为浮点数,则须先利用Float.int()来盘算出准确的索引值。
参数:string=字符串
element=字符串
index=数字
separator=字符串
回传值:字符串或invalid
破例情况:假如separator是个空字符串,则回传invalid
典范:vara="BC;E";
vars="";
vard=String.replaceAT(a,"A",0,s);//b="AC;E"
vare=String.replaceAT(a,"F",5,";");//d="BC;F"

InsertAt

程序:insertAt(string,index,separator)
申明:将元素element与绝对应的分开标记separator拔出与原始字符串string,在特定的element中的元素
假如index值小于0,则0会用来当索引值。
假如index值年夜于元素的数量,则元素element会附加上字符串string的为端。
假如字符串string为空字符串,则回传包括所赐与元素element的新字符串。
假如index值为浮点数,则需先利用Float.int()来盘算出准确的索引值。
参数:string=字符串
element=字符串
index=数字
separator=字符串
回传值:字符串或invalid
破例情况:假如separator是个空字符串,则回传invalid
典范:vara="BC;E";
vars="";
varb=String.insertAt(a,"A",0,s);//b="ABC;E"
varc=String.insertAt(a,"X",3,s);//c="BC;EX"
vard=String.insertAt(a,"D",1,";");//d="BC;D;E"
vare=String.insertAt(a,"F",5,";");//e="BC;E;F"

squeeze

程序:squeeze(string)
申明:将字符串string中一切一连的空格削减为一个空格。
参数:stromg=字符串
回传值:字符串或invalid
破例情况:无
典范:vara="Hello";
varb="ByeJon.Seeyou!";
varc=String.squeeze(a);//c="Hello"
vard=String.squeeze(b);//d="ByeJon.Seeyou!"

trim

程序:trim(string)
申明:将字符串string中一切开首与一连的空格删除。
参数:string=字符串
回传值:字符串或invalid
破例情况:无
典范:vara="Hello";
varb="ByeJon.Seeyou!";
varc=String.squeeze(a);//c="Hello"
vard=String.squeeze(b);//d="ByeJon.Seeyou!"

compare

程序:compare(string,string2)
申明:这个程序的回传值会指出string1与string2在语汇上干系,这个干系是基于天然字集的字符码之间,其回传值以下:
假如string1小于string2,传会-1。
假如string1即是string2,传会-1。
假如string1年夜于string2,传会-1。
参数:string1=字符串
string2=字符串
回传值:整数或invalid
破例情况:无
典范:vara="Hello";
varb="Hello";
varc=String.compare(a,b);//c=0
vard=String.compare("Bye","Jon");//d=-1
vare=String.compare("Jon","Bye");//e=1

toString

程序:toString(value)
申明:回传一个能暗示所赐与的值value的字符串,这个程序跟WMLScript的转换是一样的,除invlaid值会回传一个"invalid"字符串。
参数:value=恣意值
回传值:字符串
破例情况:无
典范:vara=string.toString(12);//a="12"
vara=string.toString(true);//b="true"

format

程序:format(format,value)
申明:将赐与的值value转换成字符串,并按照所赐与的格局format供应的格局化的字符串,这个格局字符串只能由一种特定格局,并能安排于字符串的任何中央,假如凌驾一种以上的格局必要利用,则能会利用最右边的格局,至于其他格局则有空字符串取代,这些格局以下:

[width][.precision]type
width参数为非负的是近制整数,这个参数把持与展现字符的最小数量,假如输入的字数小于指定的宽度width,则会在字符串的右边加上空缺,直到切合最小宽度的请求,width参数永久不会是值value被删减,假如输入的字数年夜于特定的宽度或并没指定宽度的话,value中一切的字符城市被展现。

precision参数是个非负的十进制整数,这个引号之前必需限价上(.)的标记,其目标是用来设定输出值的准确度,这个值的解议会跟赐与的格局有关:

d界定命字最小的展现数量,假如value中数字的数量凌驾precision的值,输出值会在其右边加上0,假如数字的数量凌驾precision值,value的值其实不会被删减,预设的precision值为1,假如precision值设定为0,并且value页被转换成0,则了局将是一个空字符串。

f界定十进制小数后的数字数量,假如十进制的小数点呈现了,在小数点以后最少要有一名数,这个值会被四舍五进到近似的数字数值,预设的precision为6,假如precision为0或小数点(.)后没无数字,则不会展现小数点,当value值的小数点后数字数量小于precision的值,字母0为被到场直到填满栏位(如:String.format("%2.3f",1.2)会是"1.200")

s界定字符所要展现的最年夜数量,预设值是展现一切的字符,当width值年夜于precision值,width值是能够疏忽的,跟width值分歧的是,precision只大概会形成浮点数值的四舍五进或输出值的删减。

type参数是独一格局的参数,他呈现在任何的格局栏为选项以后,type字符决意了所赐与的value将会解译成整数,浮点数或字符串,撑持的type参数以下:
d整数:输出值的格局[-]dddd,这里的dddd是一个或以上的十进制数字。
f浮点数:输出值的格局[-]dddd.dddd,这里的dddd是一个或以上的十进制数字,在小数点之前的数字数量和数字的巨细有关,小数点以后的数字数量和准确度有关。
s字符串:字符的展现跟准确度有关。
百分比字符(%)在格局字符串中能利用分外的百分比字符加以暗示(%%)。
参数:format=字符串
value=恣意值
回传值:字符串或invalid
破例情况;有效的格局会回传invalid值。
典范:vara=45;
varb=-45;
varc="now";
vard=1.2345678;
vare=String.format("e:%6d",a);//e="e:45"
vare=String.format("%6d",b);//f="-45"
vare=String.format("e:%6d",a);//g="0045"
vare=String.format("%6.4d",b);//h="-0045"
vare=String.format("Doit%s",c);//i="Doitnow"
vare=String.format("%3f",d);//j="1.2345678"
vare=String.format("%10.2f%%",a);//k="1.23%."
vare=String.format("%3f%2f",a);//l="1.234567."
vare=String.format("%.0d",0);//m=""
vare=String.format("%.7d","Int");//n="invalid"
vare=String.format("%s",ture);//o="ture"
Federated将不同的Mysql服务器联合起来,逻辑上组成一个完整的数据库。非常适合分布式应用
兰色精灵 该用户已被删除
沙发
发表于 2015-1-19 18:01:39 | 只看该作者
多走走一此相关论坛,多看一些实例开发,多交流0经验,没什么的,我也是刚学没多久!加油
活着的死人 该用户已被删除
板凳
发表于 2015-1-25 14:17:32 | 只看该作者
是否碎片会引发效率问题?这都是需要进一步探讨的东西。varbinary(max)代替image也让SQLServer的字段类型更加简洁统一。
老尸 该用户已被删除
地板
发表于 2015-2-2 22:20:46 | 只看该作者
一直以来个人感觉SQLServer的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。)
灵魂腐蚀 该用户已被删除
5#
发表于 2015-2-8 14:17:43 | 只看该作者
然后最好有实践机会,能够把实践到的和实践结合起来,其实理论思考是个非常困扰和痛苦的事情
深爱那片海 该用户已被删除
6#
发表于 2015-2-25 18:11:26 | 只看该作者
对一张百万级别的表建游标,同时又没有什么过滤条件,取得游标效率是如果直接SQL查询百万条数据;如果再对每条记录做处理,耗时将更长。
莫相离 该用户已被删除
7#
发表于 2015-3-8 00:44:04 | 只看该作者
习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。
简单生活 该用户已被删除
8#
发表于 2015-3-15 18:13:24 | 只看该作者
大家注意一点。如下面的例子:
小妖女 该用户已被删除
9#
发表于 2015-3-22 02:35:58 | 只看该作者
可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 04:30

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表