在pl/sql中,有这样一个需求
     :将数据库中某一个中文字符串,转成拼音.已经存在相应汉字与拼音对应的表,可以通过每一个汉字查询出相应的拼音.
如何将一串汉字,全部转成拼音的字符串.
   比如:"中国人"如何转成"Zhongguoren".

解决方案 »

  1.   

    SELECT substr(a,LEVEL,1)
    FROM
             (SELECT '中国人' a FROM dual)
        CONNECT BY level<=length(a)     
    --result:


      

  2.   

    这个很容易做到啊。
    在PL/SQL程序中对中文字符串进行遍历,取出每个汉字。
    根据每个汉字,查询汉字与拼音对照的数据库表,找到对应的拼音。
    将找出的每个拼音连接起来。
      

  3.   


    [TEST@myoracle] SQL>WITH t1 AS(
      2    SELECT '中国人' a FROM dual UNION ALL
      3    SELECT '日本人' a FROM dual UNION ALL
      4    SELECT '美国人' a FROM dual UNION ALL
      5    SELECT '韩国人' a FROM dual
      6  ),t2 AS(
      7    SELECT '中' c1,'zhong' c2 FROM dual UNION ALL
      8    SELECT '日' c1,'ri' c2 FROM dual UNION ALL
      9    SELECT '美' c1,'mei' c2 FROM dual UNION ALL
     10    SELECT '韩' c1,'han' c2 FROM dual UNION ALL
     11    SELECT '国' c1,'guo' c2 FROM dual UNION ALL
     12    SELECT '本' c1,'ben' c2 FROM dual UNION ALL
     13    SELECT '人' c1,'ren' c2 FROM dual
     14  )SELECT T.A, INITCAP(REPLACE(WM_CONCAT(T2.C2), ',', '')) ANS
     15    FROM (SELECT T1.A, SUBSTR(T1.A, L, 1) T1B
     16            FROM T1, (SELECT LEVEL L FROM DUAL CONNECT BY LEVEL <= 100) TEMP
     17           WHERE TEMP.L <= LENGTH(T1.A)) T,
     18         T2
     19   WHERE T.T1B = T2.C1
     20   GROUP BY T.A
     21  ;A          ANS
    ---------- --------------------
    韩国人     Hanguoren
    美国人     Meiguoren
    日本人     Ribenren
    中国人     Zhongguoren