熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> SQL Server >> 正文

深度發掘SQL Server 2000 UDF(下)

2013-11-15 14:34:46  來源: SQL Server 

  大小寫轉換函數
  
  該函數有兩個參數@String和@Capitalize_What
  
  依據 @Capitalize_What的值函數有不同的功能
  
  ¨ @Capitalize_What = string
  
  函數將 @string的第一個非空字符轉換成大寫 其余部分改為小寫
  
  ¨ @Capitalize_What = sentence
  
  函數將 @string中的每一句的首個非空字符轉換為大寫句子其余部分轉換為小寫斷句的依據是!?
  
  ¨ @Capitalize_What = word
  
  函數將 @string中的每個詞都轉換成首字符大寫其余小寫的形式
  
  CREATE FUNCTION dboCapitalize (
  
   Capitalize the first character of every word
  
   sentence or the whole string Put the rest to lowercase
  
  @String VARCHAR ()
  
  @Capitalize_What VARCHAR () = string
  
   String: Capitalize the first letter of the string
  
   Sentence: Capitalize the first letter of every sentence
  
   Delimiters: /!/?
  
   Word: Capitalize the first letter of every word
  
   Delimiters: any characters other than letters and digits
  
  )
  
  RETURNS VARCHAR()
  
  AS
  
  BEGIN
  
  DECLARE @Position SMALLINT
  
  @Char CHAR()
  
  @First_Char CHAR ()
  
  @Word_Start SMALLINT
  
  SET @Capitalize_What = LOWER( @Capitalize_What )
  
  SET @Word_Start =
  
  IF @Capitalize_What IN (word sentence)
  
  BEGIN
  
  SET @Position = DATALENGTH( @String )
  
  WHILE @Position >= BEGIN
  
  SET @Char = CASE @Position
  
  WHEN THEN
  
  ELSE UPPER( SUBSTRING(
  
  @String @Position
  
   ) )
  
  END
  
  IF @Char BETWEEN A AND Z
  
  OR @Char BETWEEN and BEGIN
  
  SET @Word_Start = @Position
  
  SET @First_Char = UPPER( @Char )
  
  END
  
  ELSE BEGIN
  
  IF @Capitalize_What = word
  
  OR @Char in ( ! ? ) BEGIN
  
  IF @Word_Start >
  
  AND @First_Char BETWEEN A
  
  AND Z
  
  SET @String = STUFF(
  
  @String @Word_Start
  
   @First_Char )
  
  SET @Word_Start =
  
  END
  
  END
  
  SET @Position = @Position
  
  END
  
  END
  
  ELSE BEGIN Capitalize the first character
  
  SET @Position =
  
  WHILE @Position < DATALENGTH( @String )
  
  BEGIN
  
  SET @Position = @Position +
  
  SET @Char = UPPER( SUBSTRING( @String
  
  @Position ) )
  
  IF @Char BETWEEN A AND Z
  
  OR @Char BETWEEN AND BEGIN
  
  SET @String = STUFF( @String
  
  @Position @Char )
  
  SET @Position =
  
  END
  
  END
  
  END
  
  RETURN( @String )
  
  END
  
  go
  
  小結
  
  SQL Server 的 UDF的應用是很廣泛的它會給編程人員帶來極大的便利您可以建立自己的system UDF存在Master數據庫中可以為任何數據庫進行調用
  
  UDF也有不足我們知道系統函數可以任意調有不管您使用大寫小寫或者大小寫混合UDF卻不行它是大小寫敏感的
  
  在未來的版本中我希望微軟為UDF增加默認值的功能以後我們可以這樣定義一個函數
  
  CREAT FUNCTION dboTest_default
  
  ( @parm int =
  
  RETURN INT
  
  AS
  
  BEGIN
  
  RETURN ( @parm )
  
  END
  
  UDF中諸如此類的小問題還有不少希望UDF的功能越來越強大我們編程人員工作起來就會越來越輕松

From:http://tw.wingwit.com/Article/program/SQLServer/201311/22009.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.