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

使用 SQL Server創建語言輔助函數

2013-11-15 14:43:36  來源: SQL Server 

  在現在這樣一個全球化環境中因為在不同的語言中有很多不同的語法規則所以以前很多簡單的任務現在都變得很困難你可以將一門特定的語言分成一組語法規則和針對這些規則的異常(以及一個基本詞語)從而將這些任務一般化在一些編程語言(比如 Perl 和 Java)中有一些公共域(domain)模塊可以用來對文本完成語言轉換
  
  下面給出一個稍微簡單一點兒的例子假設我們要將一個數字轉換成其拼寫版本(例如需要填寫支票和法律合同)這個訣竅在 Oracle 出現的早期已經有了一般都以如下方式使用
  
  selectto_char(to_date(JJsp) from dual
  
  Twelve Thousand Three Hundred FortyFive
  
  TO_DATE 函數使用 Julian 日期格式將數字轉換成一個日期然後TO_CHAR 接受一個日期參數並再次將其格式化為一個表示 Julian 日期的拼寫數字版本的字符串但是這個決竅有一些限制
  
  首先在 Oracle 中 Julian 日期的最大有效值是所以日期的最大值只能取到而最小值是BC而且因為沒有第所以如果不額外使用一個 DECODE 或 CASE 語句就不可能生成文本第三個大的限制是它會忽略掉你的 NLS 設置不管你使用的是哪種語言數字總是以美國英語拼寫出一些簡單的操作也存在這樣的問題比如拼寫出天例如嘗試生成西班牙語短語Cinco de Mayo
  
  alter session set nls_language = SPANISHselect to_char(to_date(MMDDDdspth Month) from dual
  
  Fifth Mayo
  在為大多數語言生成數字時涉及的語法實際上相當簡單主體工作包括收集所有不同的語法規則並建立起足夠的規則來生成正確的語法模式(現在我將回避涉及到匹配數字和性別的問題
  
  首先我將創建兩個表第一個表保存基本的單詞和異常第二個表保存用於生成文本的一些簡單的模板模式如果在第一個表中有數字那麼我的語言函數就返回那個文本對於其它每個數字我將試圖在一系列模式中匹配它並應用一個模板來生成正確的文本
  
  create table numwords(lang  varcharnum   integerword  varcharconstraint numwords_pk primary key (langnum))
  
  create table numrules(lang  varcharseq   integerp   integerp   integertemp  varchartemp  varcharconstraint numrules_pk primary key (langseq))
  

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