获取表中以某个拼音开头的记录

今天在在论坛上有个帖子里的回帖中一个朋友贴出了一个不错的函数,如果记录中有中文的话,通过使用这个函数,可以比较容易的判别出哪些记录是以某个特定首字母拼音开头的。

函数如下

CREATE OR REPLACE FUNCTION F_TRANS_PINYIN_CAPITAL(
    P_NAME IN VARCHAR2
)RETURN VARCHAR2 AS
V_COMPARE VARCHAR2(100);
V_RETURN VARCHAR2(4000);
FUNCTION F_NLSSORT(
    P_WORD IN VARCHAR2
)RETURN VARCHAR2 AS
BEGIN
    RETURN NLSSORT(P_WORD,'NLS_SORT=SCHINESE_PINYIN_M');
END;
BEGIN
    IF UPPER(SUBSTR(P_NAME,1,1))>='A' AND UPPER(SUBSTR(P_NAME,1,1))<='Z' THEN
        RETURN SUBSTR(P_NAME,1,1);
    END IF;
    V_COMPARE := F_NLSSORT(SUBSTR(P_NAME,1,1));
    IF V_COMPARE>= F_NLSSORT('吖')AND V_COMPARE<= F_NLSSORT('驁')THEN
        V_RETURN := V_RETURN||'A';
    ELSIF V_COMPARE>= F_NLSSORT('八')AND V_COMPARE<= F_NLSSORT('簿')THEN
        V_RETURN := V_RETURN||'B';
    ELSIF V_COMPARE>= F_NLSSORT('嚓')AND V_COMPARE<= F_NLSSORT('錯')THEN
        V_RETURN := V_RETURN||'C';
    ELSIF V_COMPARE>= F_NLSSORT('咑')AND V_COMPARE<= F_NLSSORT('鵽')THEN
        V_RETURN := V_RETURN||'D';
    ELSIF V_COMPARE>= F_NLSSORT('妸')AND V_COMPARE<= F_NLSSORT('樲')THEN
        V_RETURN := V_RETURN||'E';
    ELSIF V_COMPARE>= F_NLSSORT('发')AND V_COMPARE<= F_NLSSORT('猤')THEN
        V_RETURN := V_RETURN||'F';
    ELSIF V_COMPARE>= F_NLSSORT('旮')AND V_COMPARE<= F_NLSSORT('腂')THEN
        V_RETURN := V_RETURN||'G';
    ELSIF V_COMPARE>= F_NLSSORT('妎')AND V_COMPARE<= F_NLSSORT('夻')THEN
        V_RETURN := V_RETURN||'H';
    ELSIF V_COMPARE>= F_NLSSORT('丌')AND V_COMPARE<= F_NLSSORT('攈')THEN
        V_RETURN := V_RETURN||'J';
    ELSIF V_COMPARE>= F_NLSSORT('咔')AND V_COMPARE<= F_NLSSORT('穒')THEN
        V_RETURN := V_RETURN||'K';
    ELSIF V_COMPARE>= F_NLSSORT('垃')AND V_COMPARE<= F_NLSSORT('擽')THEN
        V_RETURN := V_RETURN||'L';
    ELSIF V_COMPARE>= F_NLSSORT('嘸')AND V_COMPARE<= F_NLSSORT('椧')THEN
        V_RETURN := V_RETURN||'M';
    ELSIF V_COMPARE>= F_NLSSORT('拏')AND V_COMPARE<= F_NLSSORT('瘧')THEN
        V_RETURN := V_RETURN||'N';
    ELSIF V_COMPARE>= F_NLSSORT('筽')AND V_COMPARE<= F_NLSSORT('漚')THEN
        V_RETURN := V_RETURN||'O';
    ELSIF V_COMPARE>= F_NLSSORT('妑')AND V_COMPARE<= F_NLSSORT('曝')THEN
        V_RETURN := V_RETURN||'P';
    ELSIF V_COMPARE>= F_NLSSORT('七')AND V_COMPARE<= F_NLSSORT('裠')THEN
        V_RETURN := V_RETURN||'Q';
    ELSIF V_COMPARE>= F_NLSSORT('亽')AND V_COMPARE<= F_NLSSORT('鶸')THEN
        V_RETURN := V_RETURN||'R';
    ELSIF V_COMPARE>= F_NLSSORT('仨')AND V_COMPARE<= F_NLSSORT('蜶')THEN
        V_RETURN := V_RETURN||'S';
    ELSIF V_COMPARE>= F_NLSSORT('侤')AND V_COMPARE<= F_NLSSORT('籜')THEN
        V_RETURN := V_RETURN||'T';
    ELSIF V_COMPARE>= F_NLSSORT('屲')AND V_COMPARE<= F_NLSSORT('鶩')THEN
        V_RETURN := V_RETURN||'W';
    ELSIF V_COMPARE>= F_NLSSORT('夕')AND V_COMPARE<= F_NLSSORT('鑂')THEN
        V_RETURN := V_RETURN||'X';
    ELSIF V_COMPARE>= F_NLSSORT('丫')AND V_COMPARE<= F_NLSSORT('韻')THEN
        V_RETURN := V_RETURN||'Y';
    ELSIF V_COMPARE>= F_NLSSORT('帀')AND V_COMPARE<= F_NLSSORT('咗')THEN
        V_RETURN := V_RETURN||'Z';
    END IF;

    RETURN V_RETURN;
END;
/


以后只要
select * from table

where F_TRANS_PINYIN_CAPITAL(name) = 'A' order by NLSSORT(name,'NLS_SORT = SCHINESE_PINYIN_M')
就能找到所有以A开头且按拼音排序的咯。

下面做个例子看看

SQL> select * from t3;

NAME
----------------------------------------


SQL> CREATE OR REPLACE FUNCTION F_TRANS_PINYIN_CAPITAL(
  2      P_NAME IN VARCHAR2
  3  )RETURN VARCHAR2 AS
  4  V_COMPARE VARCHAR2(100);
  5  V_RETURN VARCHAR2(4000);
  6  FUNCTION F_NLSSORT(
  7      P_WORD IN VARCHAR2
  8  )RETURN VARCHAR2 AS
  9  BEGIN
 10      RETURN NLSSORT(P_WORD,'NLS_SORT=SCHINESE_PINYIN_M');
 11  END;
 12  BEGIN
 13      IF UPPER(SUBSTR(P_NAME,1,1))>='A' AND UPPER(SUBSTR(P_NAME,1,1))<='Z' TH
EN
 14          RETURN SUBSTR(P_NAME,1,1);
 15      END IF;
 16      V_COMPARE := F_NLSSORT(SUBSTR(P_NAME,1,1));
 17      IF V_COMPARE>= F_NLSSORT('吖')AND V_COMPARE<= F_NLSSORT('驁')THEN
 18          V_RETURN := V_RETURN||'A';
 19      ELSIF V_COMPARE>= F_NLSSORT('八')AND V_COMPARE<= F_NLSSORT('簿')THEN
 20          V_RETURN := V_RETURN||'B';
 21      ELSIF V_COMPARE>= F_NLSSORT('嚓')AND V_COMPARE<= F_NLSSORT('錯')THEN
 22          V_RETURN := V_RETURN||'C';
 23      ELSIF V_COMPARE>= F_NLSSORT('咑')AND V_COMPARE<= F_NLSSORT('鵽')THEN
 24          V_RETURN := V_RETURN||'D';
 25      ELSIF V_COMPARE>= F_NLSSORT('妸')AND V_COMPARE<= F_NLSSORT('樲')THEN
 26          V_RETURN := V_RETURN||'E';
 27      ELSIF V_COMPARE>= F_NLSSORT('发')AND V_COMPARE<= F_NLSSORT('猤')THEN
 28          V_RETURN := V_RETURN||'F';
 29      ELSIF V_COMPARE>= F_NLSSORT('旮')AND V_COMPARE<= F_NLSSORT('腂')THEN
 30          V_RETURN := V_RETURN||'G';
 31      ELSIF V_COMPARE>= F_NLSSORT('妎')AND V_COMPARE<= F_NLSSORT('夻')THEN
 32          V_RETURN := V_RETURN||'H';
 33      ELSIF V_COMPARE>= F_NLSSORT('丌')AND V_COMPARE<= F_NLSSORT('攈')THEN
 34          V_RETURN := V_RETURN||'J';
 35      ELSIF V_COMPARE>= F_NLSSORT('咔')AND V_COMPARE<= F_NLSSORT('穒')THEN
 36          V_RETURN := V_RETURN||'K';
 37      ELSIF V_COMPARE>= F_NLSSORT('垃')AND V_COMPARE<= F_NLSSORT('擽')THEN
 38          V_RETURN := V_RETURN||'L';
 39      ELSIF V_COMPARE>= F_NLSSORT('嘸')AND V_COMPARE<= F_NLSSORT('椧')THEN
 40          V_RETURN := V_RETURN||'M';
 41      ELSIF V_COMPARE>= F_NLSSORT('拏')AND V_COMPARE<= F_NLSSORT('瘧')THEN
 42          V_RETURN := V_RETURN||'N';
 43      ELSIF V_COMPARE>= F_NLSSORT('筽')AND V_COMPARE<= F_NLSSORT('漚')THEN
 44          V_RETURN := V_RETURN||'O';
 45      ELSIF V_COMPARE>= F_NLSSORT('妑')AND V_COMPARE<= F_NLSSORT('曝')THEN
 46          V_RETURN := V_RETURN||'P';
 47      ELSIF V_COMPARE>= F_NLSSORT('七')AND V_COMPARE<= F_NLSSORT('裠')THEN
 48          V_RETURN := V_RETURN||'Q';
 49      ELSIF V_COMPARE>= F_NLSSORT('亽')AND V_COMPARE<= F_NLSSORT('鶸')THEN
 50          V_RETURN := V_RETURN||'R';
 51      ELSIF V_COMPARE>= F_NLSSORT('仨')AND V_COMPARE<= F_NLSSORT('蜶')THEN
 52          V_RETURN := V_RETURN||'S';
 53      ELSIF V_COMPARE>= F_NLSSORT('侤')AND V_COMPARE<= F_NLSSORT('籜')THEN
 54          V_RETURN := V_RETURN||'T';
 55      ELSIF V_COMPARE>= F_NLSSORT('屲')AND V_COMPARE<= F_NLSSORT('鶩')THEN
 56          V_RETURN := V_RETURN||'W';
 57      ELSIF V_COMPARE>= F_NLSSORT('夕')AND V_COMPARE<= F_NLSSORT('鑂')THEN
 58          V_RETURN := V_RETURN||'X';
 59      ELSIF V_COMPARE>= F_NLSSORT('丫')AND V_COMPARE<= F_NLSSORT('韻')THEN
 60          V_RETURN := V_RETURN||'Y';
 61      ELSIF V_COMPARE>= F_NLSSORT('帀')AND V_COMPARE<= F_NLSSORT('咗')THEN
 62          V_RETURN := V_RETURN||'Z';
 63      END IF;
 64
 65      RETURN V_RETURN;
 66  END;
 67  /

函数已创建。

SQL> select * from t3
  2  where F_TRANS_PINYIN_CAPITAL(name) = 'A'
  3  order by NLSSORT(name,'NLS_SORT = SCHINESE_PINYIN_M');

NAME
----------------------------------------

SQL> select * from t3
  2  where F_TRANS_PINYIN_CAPITAL(name) = 'B'
  3  order by NLSSORT(name,'NLS_SORT = SCHINESE_PINYIN_M');

NAME
----------------------------------------

 

再多加两条记录试试

SQL> insert into t3 values('李');

已创建 1 行。

SQL> insert into t3 values('王');

已创建 1 行。

SQL> commit;

SQL> select * from t3
  2  where F_TRANS_PINYIN_CAPITAL(name) = 'L'
  3  order by NLSSORT(name,'NLS_SORT = SCHINESE_PINYIN_M');

NAME
----------------------------------------

SQL> select * from t3
  2  where F_TRANS_PINYIN_CAPITAL(name) = 'W'
  3  order by NLSSORT(name,'NLS_SORT = SCHINESE_PINYIN_M');

NAME
----------------------------------------


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wh62592855/archive/2009/12/19/5040972.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要实现JS获取拼音全拼,可以借助第三方库pinyin.js来实现。pinyin.js是一个基于汉字转拼音的JavaScript库,可以将文转成拼音,并具有全拼、简拼以及多音字处理的功能。 实现的步骤如下: 1. 首先,下载pinyin.js库,并在HTML文件引入该库的脚本。 2. 创建一个input文本框,用于输入文字符。 3. 监听input文本框的oninput事件,在事件处理函数获取输入的文字符。 4. 使用pinyin.js库的方法将文字符转换成拼音。可以使用pinyin.js库提供的toPinyin方法来实现,该方法接收一个字符串参数,返回对应的拼音全拼字符串。 5. 将转换后的拼音全拼字符串显示在页面上,可以通过innerHTML或者innerText属性来设置显示内容。 示例代码如下: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script src="pinyin.js"></script> </head> <body> <input id="input" type="text" oninput="getFullPinyin()"> <div id="pinyin"></div> <script> function getFullPinyin() { var input = document.getElementById("input").value; var fullPinyin = pinyinUtil.toPinyin(input, '', true); document.getElementById("pinyin").innerText = fullPinyin; } </script> </body> </html> ``` 以上示例,pinyin.js库被引入,并在输入框的oninput事件调用getFullPinyin函数,获取文输入的拼音全拼,并将结果显示在id为pinyin的div元素。 ### 回答2: 在JavaScript,可以使用第三方库来获取拼音全拼。其一个常用的库是pinyin.js。使用该库可以非常方便地将文转换成拼音全拼。 首先,需要将pinyin.js库引入到项目。可以通过在HTML文件添加如下代码来实现: ```html <script src="pinyin.js"></script> ``` 假设我们要获取文字符串"国"的拼音全拼。可以使用以下代码来实现: ```javascript var pinyin = PinyinHelper.convertToPinyinString("国", "", PinyinFormat.WITHOUT_TONE); console.log(pinyin); // 输出:zhongguo ``` 在上述代码,`PinyinHelper.convertToPinyinString`函数接受三个参数。第一个参数是要转换的文字符串,第二个参数是分隔符,指定将拼音拼接在一起时使用的分隔符,默认为空字符串。第三个参数是拼音格式,可选值有WITH_TONE_NUMBER(带声调数字)、WITHOUT_TONE(不带声调)和WITH_TONE_MARK(带声调符号)。 通过调用`PinyinHelper.convertToPinyinString`函数,即可将文字符串转换为拼音全拼。以上例子,输出结果为"zhongguo",即“国”的拼音全拼。 ### 回答3: 要使用JavaScript获取拼音全拼,我们可以借助第三方的拼音库,比如pinyin.js。首先,我们需要在项目引入该库。 然后,我们可以使用该库的方法将文转换为拼音。具体的步骤如下: 1. 创建一个存储文字符串的变量。 2. 使用pinyin库的方法,将文字符串转换为拼音数组。 3. 将拼音数组转换为拼音字符串。 4. 输出拼音字符串。 下面是一个示例代码: ```javascript // 引入pinyin库 import pinyin from 'pinyin'; // 定义文字符串 const chineseString = '拼音'; // 将文字符串转换为拼音数组 const pinyinArray = pinyin(chineseString, { style: pinyin.STYLE_NORMAL, // 获取全拼 }); // 将拼音数组转换为拼音字符串 const pinyinString = pinyinArray.join(''); console.log(pinyinString); // 输出拼音字符串 ``` 上述代码,我们使用`pinyin.STYLE_NORMAL`来获取拼音的全拼形式。你也可以尝试其他的拼音风格,比如缩写形式。 总之,通过使用第三方库pinyin.js,我们可以方便地在JavaScript获取文字符串的拼音全拼。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值