`

数据库取拼音码的存储过程(Oracle、Sql Server)

阅读更多
Oracle数据库:
CREATE OR REPLACE FUNCTION fgetpy (v_str VARCHAR2)
   RETURN VARCHAR2
AS
   v_strlen   INT;
   v_return   VARCHAR2 (500);
   v_ii       INT;
   v_n        INT;
   v_c        VARCHAR2 (2);
   v_chn      VARCHAR2 (2);
   v_rc       VARCHAR2 (500);
/*************************************************************************
生成汉字拼音码的函数。 wallimn 2009-06-21 
**************************************************************************/
BEGIN
   --dbms_output.put_line(v_str);
   v_rc := v_str;
   v_strlen := LENGTH (v_rc);
   v_return := '';
   v_ii := 0;

   WHILE v_ii < v_strlen
   LOOP
      v_ii := v_ii + 1;
      v_n := 63;

      SELECT SUBSTR (v_rc, v_ii, 1)
        INTO v_chn
        FROM DUAL;

      SELECT v_n + MAX (rowsf)
        INTO v_n
        FROM (SELECT chn, ROWNUM rowsf
                FROM (SELECT   chn
                          FROM (SELECT '吖' chn
                                  FROM DUAL
                                UNION
                                SELECT '八'
                                  FROM DUAL
                                UNION ALL
                                SELECT '嚓'
                                  FROM DUAL
                                UNION ALL
                                SELECT '咑'
                                  FROM DUAL
                                UNION ALL
                                SELECT '妸'
                                  FROM DUAL
                                UNION ALL
                                SELECT '发'
                                  FROM DUAL
                                UNION ALL
                                SELECT '旮'
                                  FROM DUAL
                                UNION ALL
                                SELECT '铪'
                                  FROM DUAL
                                UNION ALL
                                SELECT '丌'
                                  FROM DUAL              --because have no 'i'
                                UNION ALL
                                SELECT '丌'
                                  FROM DUAL
                                UNION ALL
                                SELECT '咔'
                                  FROM DUAL
                                UNION ALL
                                SELECT '垃'
                                  FROM DUAL
                                UNION ALL
                                SELECT '嘸'
                                  FROM DUAL
                                UNION ALL
                                SELECT '拏'
                                  FROM DUAL
                                UNION ALL
                                SELECT '噢'
                                  FROM DUAL
                                UNION ALL
                                SELECT '妑'
                                  FROM DUAL
                                UNION ALL
                                SELECT '七'
                                  FROM DUAL
                                UNION ALL
                                SELECT '呥'
                                  FROM DUAL
                                UNION ALL
                                SELECT '仨'
                                  FROM DUAL
                                UNION ALL
                                SELECT '他'
                                  FROM DUAL
                                UNION ALL
                                SELECT '屲'
                                  FROM DUAL
                                UNION ALL
                                SELECT '屲'
                                  FROM DUAL
                                UNION ALL
                                SELECT '屲'
                                  FROM DUAL
                                UNION ALL
                                SELECT '夕'
                                  FROM DUAL
                                UNION ALL
                                SELECT '丫'
                                  FROM DUAL
                                UNION ALL
                                SELECT '帀'
                                  FROM DUAL
                                UNION ALL
                                SELECT v_chn
                                  FROM DUAL) a
                      ORDER BY NLSSORT (chn, 'NLS_SORT=SCHINESE_PINYIN_M')) c) b
       WHERE chn = v_chn;

      v_c := CHR (v_n);

      IF CHR (v_n) = '@'
      THEN                                                      --英文直接返回
         v_c := v_chn;
      END IF;

      v_return := v_return || v_c;
	  v_return := lower(v_return);
   END LOOP;

   RETURN v_return;
END fgetpy;

Sql Server数据库:
 create   function   fGetPy(@Str   varchar(500)='')   
  returns   varchar(500)   
  as   
  begin   
  declare   @strlen   int,@return   varchar(500),@ii   int   
  declare   @n   int,@c   char(1),@chn   nchar(1)   
    
  select   @strlen=len(@str),@return='',@ii=0   
  set   @ii=0   
  while   @ii<@strlen   
  begin   
  select   @ii=@ii+1,@n=63,@chn=substring(@str,@ii,1)   
  select   @n   =   @n   +1   
  ,@c   =   case   chn   when   @chn   then   char(@n)   else   @c   end   
  from(   
  select   top   27   *   from   (   
  select   chn   =   '吖'   
  union   all   select   '八'   
  union   all   select   '嚓'   
  union   all   select   '咑'   
  union   all   select   '妸'   
  union   all   select   '发'   
  union   all   select   '旮'   
  union   all   select   '铪'   
  union   all   select   '丌' --because   have   no   'i'   
  union   all   select   '丌'   
  union   all   select   '咔'   
  union   all   select   '垃'   
  union   all   select   '嘸'   
  union   all   select   '拏'   
  union   all   select   '噢'   
  union   all   select   '妑'   
  union   all   select   '七'   
  union   all   select   '呥'   
  union   all   select   '仨'   
  union   all   select   '他'   
  union   all   select   '屲' --no   'u'   
  union   all   select   '屲' --no   'v'   
  union   all   select   '屲'   
  union   all   select   '夕'   
  union   all   select   '丫'   
  union   all   select   '帀'   
  union   all   select   @chn)   as   a   
  order   by   chn   COLLATE   Chinese_PRC_CI_AS     
  )   as   b   
  set   @return=@return+@c   
  end   
  return(@return)   
  end

分享到:
评论
1 楼 taochenpfj 2009-11-25  
是首字母啊!不是全部的

相关推荐

    获取拼音首码和五笔首码

    此外,为了支持所有数据库,开发者可能需要编写适配器或者接口,使得该功能能够在多种数据库系统(如MySQL、Oracle、SQL Server、MongoDB等)上运行。这涉及到对不同数据库SQL语法的了解,以及可能的性能优化策略,...

    新华字典sql文件(适用于sqlserver,稍微改造也可用于oracle,mysql等)

    SQL文件可以被多种数据库管理系统支持,包括SQL Server、Oracle和MySQL。 SQL Server是由Microsoft开发的一款企业级数据库管理系统,广泛应用于大型企业的数据存储和管理。这个新华字典的SQL文件可以直接在SQL ...

    Mysql Oracle 数据库开发设计及使用规范

    ### MySQL Oracle 数据库开发设计及使用规范 #### 设计规范 **1. 数据设计原则** - **遵循3NF规范:** - 表中的每个值只能出现一次。 - 每一行都应通过唯一的键来标识。 - 表内不应包含依赖于其他键的非键信息...

    Sqlserver2000经典脚本

    下边是部分目录,觉得有用的话就顶一个 C:. │ sqlserver2000.txt │ ├─第01章 │ 1.9.1 设置内存选项.sql │ 1.9.2(2) 使用文件及文件组.sql │ 1.9.2(3) 调整tempdb数据库的文件...

    省市区名称、拼音,数据库表

    常见的数据库管理系统如MySQL、Oracle、SQL Server等都支持创建和操作这样的表格。 标签中的"sql"表明了我们可以使用SQL(Structured Query Language)来操作这些数据。SQL是一种用于管理关系数据库的标准语言,...

    sql server sql语言培训 超级详细

    - **关系数据库**:基于关系模型,是最常用的一种类型,如Oracle、DB2、Sybase、MSSQL Server、Informax、MySQL等。当前企业中广泛使用的是关系数据库系统,特别是在商业应用领域。 - **树状数据库**:采用层次...

    SQLSERVER 入门到熟悉

    标题“SQLSERVER 入门到熟悉”暗示了这份文档是一份SQL Server数据库管理的学习笔记,面向的是初学者。通过阅读文档中的部分内容,可以提炼出以下知识点: 1. 数据库的种类:文档列出了包括Sybase、Oracle、DB2、...

    常用SQL书写技巧,包括sqlserver、oracle等

    在SQL书写技巧中,针对SQL Server和Oracle等数据库管理系统,优化SQL语句是提升查询性能的关键。这涉及到索引的建立、使用以及注意事项。 首先,建立“适当”的索引是快速查询的基础。索引分为聚集索引和非聚集索引...

    经典SQL脚本大全

    │ sqlserver2000.txt │ ├─第01章 │ 1.9.1 设置内存选项.sql │ 1.9.2(2) 使用文件及文件组.sql │ 1.9.2(3) 调整tempdb数据库的文件属性.sql │ ├─第02章 │ │ 2.1 日期概念理解中的一些测试.sql │ │ ...

    查询汉字首字母及全拼sql自定义方法

    这种方法对于没有内置拼音支持的数据库系统特别有用,例如MySQL、SQL Server或Oracle等。 描述中的"经过测试,这个方法保证好用,不需东奔西跑!"表明该方法已经过实际验证,具有较高的稳定性和实用性,开发者无需...

    ... 录用时间、按档案保管单位;档案查询――按人才编码、按姓名、按拼音码).zip

    2. **关系数据库管理系统(RDBMS)**:如MySQL、Oracle或SQL Server等,是存储和管理这些数据的主要工具。需要熟练掌握SQL语言,用于创建、更新和查询数据库。 3. **数据查询语言(SQL)**:SQL是用于与数据库交互...

    中文转换为拼音java

    在SQL Server 2000和Oracle数据库中,处理中文字符通常需要考虑字符集设置。 在SQL Server 2000中,你需要确保数据库、表和列的编码支持中文,比如选择支持Unicode的nvarchar数据类型。而在Oracle数据库中,可以...

    oracle查询语句大全.docx

    以上只是Oracle查询语句的一部分,Oracle数据库系统提供了丰富的SQL语法和高级特性,如索引、视图、触发器、存储过程等,这些都极大地扩展了数据操作的灵活性和复杂性。在实际工作中,根据具体需求选择和组合使用...

    020年最新省市区sql文件

    在处理这个SQL文件时,开发者需要具备一定的数据库管理技能,如使用MySQL、Oracle或SQL Server等数据库管理系统,并熟悉SQL语句,包括CREATE TABLE、INSERT INTO等,来创建和填充数据表。同时,还需要了解如何将外部...

    oracle查询语句大全

    - 这是为了符合Oracle的调用规范,不同于SQL Server的直接使用`;`分割语句。 #### 数据检索与管理 7. **查询用户下的所有表**: - `SELECT DISTINCT table_name FROM user_tab_columns;` - 此语句用于列出当前...

    物业管理系统 jsp oracle 源码

    在这个项目中,`Oracle`数据库被用作后台数据存储,Oracle以其稳定性、高性能和丰富的功能在企业级应用中广泛使用。开发者需要了解SQL语言以及如何在Java中操作JDBC(Java Database Connectivity)来与Oracle数据库...

    数据库设计说明书(模板).docx

    - **管理员工具**:用于数据库管理的工具,例如SQL Server Management Studio。 - **查询浏览工具**:用于查询和查看数据库数据的工具,如Toad for Oracle。 - **命令行工具**:如MySQL命令行客户端。 - **开发...

    oracle查询语句大全.doc

    Oracle查询语句是数据库管理中不可或缺的部分,它们用于获取、操作和分析存储在数据库中的数据。以下是一些关键的Oracle查询语句和概念: 1. **创建用户**: 使用`CREATE USER`语句创建新的数据库用户,例如:`...

    navicat12024_premium_cs_x64

    Navicat是一个多平台的数据库管理和开发工具,支持多种数据库管理系统,包括MySQL、MariaDB、Oracle、SQL Server等。这个版本可能是12.0.24,专为64位(x64)操作系统设计,并且可能包含简体中文(cs)语言包。 ...

Global site tag (gtag.js) - Google Analytics