Tag: 函数预览模式: 普通 | 列表

Sql 2000函数大全

SQL代码
  1. sql 2000函数大全(一)  
  2.   
  3. select语句中只能使用sql函数对字段进行操作(链接sql server),  
  4.   
  5. select 字段1 from 表1 where 字段1.IndexOf("云")=1;  
  6. 这条语句不对的原因是indexof()函数不是sql函数,改成sql对应的函数就可以了。  
  7. left()是sql函数。  
  8. select 字段1 from 表1 where charindex('云',字段1)=1; 字符串函数对二进制数据、字符串和表达式执行不同的运算。此类函数作用于CHARVARCHAR、 BINARY、 和VARBINARY 数据类型以及可以隐式转换为CHAR 或VARCHAR的数据类型。可以在Select 语句的Select 和Where 子句以及表达式中使用字符串函数。  
  9. 常用的字符串函数有:  
  10.   
  11. 一、字符转换函数  
  12. 1、ASCII()  
  13. 返回字符表达式最左端字符的ASCII 码值。在ASCII()函数中,纯数字的字符串可不用‘’括起来,但含其它字符的字符串必须用‘’括起来使用,否则会出错。  
  14. 2、CHAR()  
  15. 将ASCII 码转换为字符。如果没有输入0 ~ 255 之间的ASCII 码值,CHAR() 返回NULL 。  
  16. 3、LOWER()和UPPER()  
  17. LOWER()将字符串全部转为小写;UPPER()将字符串全部转为大写。  
  18. 4、STR()  
  19. 把数值型数据转换为字符型数据。  
  20. STR ( <float_e­xpression>[,length[, <decimal>]])  
  21. length 指定返回的字符串的长度,decimal 指定返回的小数位数。如果没有指定长度,缺省的length 值为10, decimal 缺省值为0。  
  22. 当length 或者decimal 为负值时,返回NULL;  
  23. 当length 小于小数点左边(包括符号位)的位数时,返回length 个*;  
  24. 先服从length ,再取decimal ;  
  25. 当返回的字符串位数小于length ,左边补足空格。  
  26. 二、去空格函数  
  27. 1、LTRIM() 把字符串头部的空格去掉。  
  28.   
  29. 2、RTRIM() 把字符串尾部的空格去掉。  
  30.   
  31. 三、取子串函数  
  32. 1、left()  
  33. LEFT ( <character_e­xpression>, <integer_e­xpression>)  
  34. 返回character_e­xpression 左起 integer_e­xpression 个字符。  
  35.   
  36. 2、RIGHT()  
  37. RIGHT ( <character_e­xpression>, <integer_e­xpression>)  
  38. 返回character_e­xpression 右起 integer_e­xpression 个字符。  
  39.   
  40. 3、SUBSTRING()  
  41. SUBSTRING ( <e­xpression>, <starting_ position>, length)  
  42. 返回从字符串左边第starting_ position 个字符起length个字符的部分。  
  43.   
  44. 四、字符串比较函数  
  45. 1、CHARINDEX()  
  46. 返回字符串中某个指定的子串出现的开始位置。  
  47. CHARINDEX ( <’substring_e­xpression’>, <e­xpression>)  
  48. 其中substring _e­xpression 是所要查找的字符表达式,e­xpression 可为字符串也可为列名表达式。如果没有发现子串,则返回0 值。  
  49. 此函数不能用于TEXT 和IMAGE 数据类型。  
  50. 2、PATINDEX()  
  51. 返回字符串中某个指定的子串出现的开始位置。  
  52. PATINDEX ( <’%substring _e­xpression%’>, <column_ name>)其中子串表达式前后必须有百分号“%”否则返回值为0。  
  53. 与CHARINDEX 函数不同的是,PATINDEX函数的子串中可以使用通配符,且此函数可用于CHAR、 VARCHAR 和TEXT 数据类型。  
  54.   
  55. 五、字符串操作函数  
  56. 1、QUOTENAME()  
  57. 返回被特定字符括起来的字符串。  
  58. QUOTENAME ( <’character_e­xpression’>[, quote_ character]) 其中quote_ character 标明括字符串所用的字符,缺省值为“[]”。  
  59. 2、REPLICATE()  
  60. 返回一个重复character_e­xpression 指定次数的字符串。  
  61. REPLICATE (character_e­xpression integer_e­xpression) 如果integer_e­xpression 值为负值,则返回NULL 。  
  62.   
  63. 3、REVERSE()  
  64. 将指定的字符串的字符排列顺序颠倒。  
  65. REVERSE ( <character_e­xpression>) 其中character_e­xpression 可以是字符串、常数或一个列的值。  
  66.   
  67. 4、REPLACE()  
  68. 返回被替换了指定子串的字符串。  
  69. REPLACE ( <string_e­xpression1>, <string_e­xpression2>, <string_e­xpression3>) 用string_e­xpression3 替换在string_e­xpression1 中的子串string_e­xpression2。  
  70.   
  71. 4、SPACE()  
  72. 返回一个有指定长度的空白字符串。  
  73. SPACE ( <integer_e­xpression>) 如果integer_e­xpression 值为负值,则返回NULL 。  
  74.   
  75. 5、STUFF()  
  76. 用另一子串替换字符串指定位置、长度的子串。  
  77. STUFF ( <character_e­xpression1>, <start_ position>, <length>, <character_e­xpression2>)  
  78. 如果起始位置为负或长度值为负,或者起始位置大于character_e­xpression1 的长度,则返回NULL 值。  
  79. 如果length 长度大于character_e­xpression1 中 start_ position 以右的长度,则character_e­xpression1 只保留首字符。  
  80. 六、数据类型转换函数  
  81. 1、CAST()  
  82. CAST ( <e­xpression> AS <data_ type>[ length ])  
  83.   
  84. 2、CONVERT()  
  85. CONVERT ( <data_ type>[ length ], <e­xpression> [, style])  
  86.   
  87. 1)data_type为SQL Server系统定义的数据类型,用户自定义的数据类型不能在此使用。  
  88. 2)length用于指定数据的长度,缺省值为30。  
  89. 3)把CHARVARCHAR类型转换为诸如INT或SAMLLINT这样的INTEGER类型、结果必须是带正号或负号的数值。  
  90. 4)TEXT类型到CHARVARCHAR类型转换最多为8000个字符,即CHARVARCHAR数据类型是最大长度。  
  91. 5)IMAGE类型存储的数据转换到BINARY或VARBINARY类型,最多为8000个字符。  
  92. 6)把整数值转换为MONEY或SMALLMONEY类型,按定义的国家的货币单位来处理,如人民币、美元、英镑等。  
  93. 7)BIT类型的转换把非零值转换为1,并仍以BIT类型存储。  
  94. 8)试图转换到不同长度的数据类型,会截短转换值并在转换值后显示“+”,以标识发生了这种截断。  
  95. 9)用CONVERT()函数的style 选项能以不同的格式显示日期和时间。style 是将DATATIME 和SMALLDATETIME 数据转换为字符串时所选用的由SQL Server 系统提供的转换样式编号,不同的样式编号有不同的输出格式。  
  96. 七、日期函数  
  97. 1、day(date_e­xpression)  
  98. 返回date_e­xpression中的日期值  
  99.   
  100. 2、month(date_e­xpression)  
  101. 返回date_e­xpression中的月份值  
  102.   
  103. 3、year(date_e­xpression)  
  104. 返回date_e­xpression中的年份值  
  105.   
  106. 4、DATEADD()  
  107. DATEADD ( <datepart>, <number>, <date>)  
  108. 返回指定日期date 加上指定的额外日期间隔number 产生的新日期。  
  109. 5、DATEDIFF()  
  110. DATEDIFF ( <datepart>, <date1>, <date2>)  
  111. 返回两个指定日期在datepart 方面的不同之处,即date2 超过date1的差距值,其结果值是一个带有正负号的整数值。  
  112.   
  113. 6、DATENAME()  
  114. DATENAME ( <datepart>, <date>)  
  115. 以字符串的形式返回日期的指定部分此部分。由datepart 来指定。  
  116.   
  117. 7、DATEPART()  
  118. DATEPART ( <datepart>, <date>)  
  119. 以整数值的形式返回日期的指定部分。此部分由datepart 来指定。  
  120. DATEPART (dd, date) 等同于DAY (date)  
  121. DATEPART (mm, date) 等同于MONTH (date)  
  122. DATEPART (yy, date) 等同于YEAR (date)  
  123.   
  124. 8、GETDATE()  
  125. 以DATETIME 的缺省格式返回系统当前的日期和时间。  
  126.   
  127. --聚合函数  
  128. use pubs  
  129. go  
  130. select avg(distinct price) --算平均数  
  131. from titles  
  132. where type='business'  
  133. go  
  134. use pubs  
  135. go  
  136. select max(ytd_sales) --最大数  
  137. from titles  
  138. go  
  139.   
  140. use pubs  
  141. go  
  142. select min(ytd_sales) --最小数  
  143. from titles  
  144. go  
  145.   
  146. use pubs  
  147. go  
  148. select type,sum(price),sum(advance) --求和  
  149. from titles  
  150. group by type  
  151. order by type  
  152. go  
  153.   
  154. use pubs  
  155. go  
  156. select count(distinct city) --求个数  
  157. from authors  
  158. go  
  159.   
  160. use pubs  
  161. go  
  162. select stdev(royalty) --返回给定表达式中所有值的统计标准偏差  
  163. from titles  
  164. go  
  165.   
  166. use pubs  
  167. go  
  168. select stdevp(royalty) --返回表达式中所有制的填充统计标准偏差  
  169. from titles  
  170. go  
  171.   
  172. use pubs  
  173. go  
  174. select var(royalty) --返回所有值的统计方差  
  175. from titles  
  176. go  
  177.   
  178. use pubs  
  179. go  
  180. select varp(royalty) --返回所有值的填充的统计方差  
  181. from titles  
  182. go  
  183.   
  184. --数学函数  
  185.   
  186. select sin(23.45),atan(1.234),rand(),PI(),sign(-2.34) --其中rand是获得一个随机数  
  187. --配置函数  
  188. Select @@VERSION --获取当前数据库版本  
  189. Select @@LANGUAGE --当前语言  
  190. --时间函数  
  191. select getdate() as 'wawa_getdate' --当前时间  
  192. select getutcdate() as 'wawa_getutcdate' --获取utc时间  
  193. select day(getdate()) as 'wawa_day' --取出天  
  194. select month(getdate()) as 'wawa_month' --取出月  
  195. select year(getdate()) as 'wawa_year' --取出年  
  196. select dateadd(d,3,getdate()) as wawa_dateadd --加三天,注意'd'表示天,'m'表示月,'yy'表示年,下面一样  
  197. select datediff(d,'2004-07-01','2004-07-15'as wawa_datediff --计算两个时间的差  
  198. select datename(d,'2004-07-15'as wawa_datename --取出时间的某一部分  
  199. select datepart(d,getdate()) as wawa_datepart --取出时间的某一部分,和上面的那个差不多  
  200. --字符串函数  
  201. select ascii(123) as '123',ascii('123'as '"123"',ascii('abc'as '"abc"' --转换成ascii码  
  202. select char(123),char(321),char(-123) --根据ascii转换成字符  
  203. select lower('ABC'),lower('Abc'),upper('Abc'),upper('abc'--转换大小写  
  204. select str(123.45,6,1), str(123.45,2,2) --把数值转换成字符串  
  205. select ltrim(' "左边没有空格"'--去空格  
  206. select rtrim('"右边没有空格" '--去空格  
  207. select ltrim(rtrim(' "左右都没有空格" ')) --去空格  
  208. select left('sql server',3),right('sql server',6) --取左或者取右  
  209.   
  210. use pubs  
  211. select au_lname,substring(au_fname,1,1) --取子串  
  212. from authors  
  213. order by au_lname  
  214.   
  215. select charindex('123','abc123def',2) --返回字符串中指定表达式的起始位置  
  216. select patindex('123','abc123def'),patindex('%123%','abc123def'--返回表达式中某模式第一次出现的起始位置  
  217. select quotename('abc','{'),quotename('abc'--返回由指定字符扩住的字符串  
  218. select reverse('abc'),reverse('上海'--颠倒字符串顺序  
  219. select replace('abcdefghicde','cde','xxxx'--返回呗替换了指定子串的字符串  
  220. select space(5),space(-2)  
  221.   
  222. --系统函数  
  223. select host_name() as 'host_name',host_id() as 'host_id',user_name() as 'user_name',user_id() as 'user_id',db_name() as 'db_name'  
  224. --变量的定义使用  
  225. --声明局部变量  
  226. declare @mycounter int  
  227. declare @last_name varchar(30),@fname varchar(20),@state varchar(2) --一下声明多个变量  
  228. --给变量赋值  
  229. use northwind  
  230. go  
  231. declare @firstnamevariable varchar(20),  
  232. @regionvariable varchar(30)  
  233. set @firstnamevariable='anne' --可以用set,也可以用select给变量赋值,微软推荐用set,但select在选择一个值直接赋值时很有用  
  234. set @regionvariable ='wa'  
  235.   
  236. select lastname,firstname,title --用声明并赋值过的变量构建一个Select语句并查询  
  237. from employees  
  238. where firstname= @firstnamevariable or region=@regionvariable  
  239. go  
  240. --全局变量  
  241. select @@version --返回数据库版本  
  242. select @@error --返回最后的一次脚本错误  
  243. select @@identity --返回最后的一个自动增长列的id  
  244.   
  245. --while,break,continue的使用  
  246. --首先计算所有数的平均价格,如果低于30的话进入循环让所有的price翻倍,  
  247. --里面又有个if来判断如果最大的单价还大于50的话,退出循环,否则继续循环,知道最大单价大于50就break出循环,呵呵,  
  248. --我分析的应该对吧.  
  249. use pubs  
  250. go  
  251. while (select avg(price) from titles) <$30  
  252. begin  
  253. update titles  
  254. set price=price*2  
  255. select max(price) from titles  
  256. if(select max(price) from titles) >$50  
  257. break  
  258. else  
  259. continue  
  260. end  
  261. print 'too much for the marker to bear'  
  262.   
  263. --事务编程经典例子  
  264. --begin transaction是开始事务,commit transaction是提交事务,rollback transaction是回滚事务  
  265. --这个例子是先插入一条记录,如果出现错误的话就回滚事务,也就是取消,并直接return(返回),如果没错的话就commit 提交这个事务了哦  
  266. --上面的那个return返回可以返回一个整数值,如果这个值是0的话就是执行的时候没出错,如果出错了就是一个负数,  
  267. --这个return也可以用在存储过程中,可用用 exec @return_status= pro_name来获取这个值  
  268. use pubs  
  269. go  
  270. begin tran mytran  
  271. insert into stores(stor_id,stor_name)  
  272. values('333','my books')  
  273. go  
  274. insert into discounts(discounttype,stor_id,discount)  
  275. values('清仓甩卖','9999',50.00)  
  276. if @@error <>0  
  277. begin  
  278. rollback tran mytran  
  279. print '插入打折记录出错'  
  280. return  
  281. end  
  282. commit tran mytran  
  283.   
  284. --事务处理的保存点示例  
  285. --做了事务保存点后可以rollback(回滚)到指定的保存点,不至于所有的操作都不能用  
  286. use pubs  
  287. go  
  288. select * from stores  
  289. begin transaction testsavetran  
  290. insert into stores(stor_id,stor_name)  
  291. values('1234','W.Z.D Book')  
  292. save transaction before_insert_data2  
  293. go  
  294. insert into stores(stor_id,stor_name)  
  295. values('5678','foreat Books')  
  296. go  
  297. rollback transaction before_insert_data2  
  298. select * from stores  
  299.   
  300. --存储存储过程  
  301. use pubs  
  302. if exists(select name from sysobjects where name'proc_calculate_taxes' and type='P')  
  303. drop procedure proc_calculate_taxes  
  304. go  
  305. create procedure proc_calculate_taxes (@p1 smallint=42,@p2 char(1),@p3 varchar(8)='char')  
  306. as  
  307. select *  
  308. from titles  
  309. --执行过程  
  310. EXECUTE PROC_CALCULATE_TAXES @P2='A'  

Tags: SQL 函数

分类:MSSQL | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 46

字符串分割函数

Delphi代码
  1. DELPHI没有自己的字符串分割函数,所以只能程序员自己写了,网上搜了好多但是真正好用的没有几个,  
  2. 下面这个是我在网上找到修改后了的,个人感觉算法不错,所以就贴了上来。  
  3. {第一种方法 }  
  4. function SplitString(Source, Deli: string ): TStringList;stdcall;  
  5. var  
  6.   EndOfCurrentString: byte;            //Deli是分割符号  
  7.   StringList:         TStringList;  
  8. begin  
  9.   StringList:=TStringList.Create;  
  10.   while Pos(Deli, Source)>0 do  
  11.   begin  
  12.     EndOfCurrentString := Pos(Deli, Source);  
  13.     StringList.add(Copy(Source, 1, EndOfCurrentString - 1));  
  14.     Source := Copy(Source, EndOfCurrentString + length(Deli), length(Source) - EndOfCurrentString);  
  15.   end;  
  16.   Result := StringList;  
  17.   StringList.Add(source);  
  18. end;  
  19.   
  20.   
  21. {第二种方法 }  
  22. type  
  23.   userarray=array of string;  
  24. function split(s:string;dot:char):userarray;  
  25. var  
  26.   str : userarray;  
  27.   i,j : integer;  
  28. begin  
  29.   i:=1;  
  30.   j:=0;  
  31.   SetLength(str, 255);  
  32. while Pos(dot, s) > 0 do //Pos返回子串在父串中第一次出现的位置.  
  33. begin  
  34.   str[j]:=copy(s,i,pos(dot,s)-i);  
  35.   i:=pos(dot,s)+1;  
  36.   s[i-1] := chr(ord(dot)+1);  
  37.   j:=j+1;  
  38. end;  
  39.   str[j]:=copy(s,i,strlen(pchar(s))-i+1);  
  40.   result:=str;  
  41. end;  
  42. {第二种方法 }  
  43. function StringToWords(const sString, Token: string): TStringList;var  sTmp: string;  iPos: Integer;  Toklen: Integer;begin  Toklen := Length(Token);  Result := TStringList.Create;  sTmp := sString;  iPos := Pos(Token, sTmp);  while iPos <> 0 do  begin    Result.Add(Copy(sTmp, 1, iPos - 1));    Delete(sTmp, 1, iPos - 1 + Toklen);    iPos := Pos(Token, sTmp);  end;    Result.Add(sTmp);end;  
  44.   
  45.   
  46.   
  47. 使用案例:  
  48.   
  49. var  
  50.   iField   :integer;  
  51.   lStrList :TStringList;  
  52. begin  
  53.   lStrList := TStringList.Create;  
  54. with ClientDataSet1 do  
  55.   for iField := 0 to FieldCount -1 do  
  56.   begin  
  57.     lStrList := StringToWords(Fields[iField].FieldName,';');  
  58.   end;  
  59. end;  

Tags: 字符串 分割 函数

分类:Delphi | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 37

SQL中object_id函数的用法  

SQL代码
  1. SQL中object_id函数的用法  
  2.   
  3. 这里我将其作用与用法列出来,好让大家明白:  
  4. OBJECT_ID:  
  5. 返回数据库对象标识号。  
  6. 语法  
  7. OBJECT_ID ( 'object' )  
  8. 参数  
  9. 'object'  
  10. 要使用的对象。object 的数据类型为 char 或 nchar。如果 object 的数据类型是 char,那么隐性将其转换成 nchar。  
  11. 返回类型  
  12. int  
  13. 注释  
  14. 当该参数对系统函数可选时,则系统采用当前数据库、主机、服务器用户或数据库用户。内置函数后面必须跟圆括号。  
  15. 如果指定一个临时表名,则必须在临时表名前面加上数据库名,例如:  
  16. Select OBJECT_ID('tempdb..#mytemptable')  
  17. 系统函数可以在选择列表、Where 子句和任何允许使用表达式的地方使用。有关更多信息,请参见表达式和 Where。  
  18. 示例  
  19. 下面的示例为 pubs 数据库中的 authors 表返回对象 ID。  
  20. USE master  
  21. Select OBJECT_ID('pubs..authors')  
  22. 下面是结果集:  
  23. -----------  
  24. 1977058079  
  25. (1 row(s) affected)   

Tags: SQL object_id 函数 用法

分类:MSSQL | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 37