如何按拼音查询
例:Name




哎select * from table where 条件(拼音为A开头)查询结果:
Name

解决方案 »

  1.   

    select * from table where substr(name,1,1) between '啊' and '澳'
      

  2.   

    奇了怪了
    SQL> select * from t3;NAME
    ----------------------------------------


    哎SQL> SELECT * FROM t3 ORDER BY NLSSORT(name,'NLS_SORT = SCHINESE_PINYIN_M');NAME
    ----------------------------------------


    被SQL> select * from t3 where substr(name,1,1) between '啊' and '澳';NAME
    ----------------------------------------

      

  3.   

    利用 NLSSORT(name,'NLS_SORT = SCHINESE_PINYIN_M') 的一个获取转拼音首字母的函数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开头且按拼音排序的咯。