中文助记符号生成函数的编写(plpgsql)

简介: 中文助记符号生成函数的编写(plpgsql)

在应用软件中,一些基础资料的中文内容在输入时需要使用助记符号(拼音缩写)来帮助搜索和参照。那么怎么生成助记符号也是要处理的一个问题。在后台建立一个表,把计算好的助记符号存起来,就是按这个字段值来查询了。

一、汉字及拼音首字母存储到表中

CREATE TABLE IF NOT EXISTS public.x9_gnzjfh
(
    wz character varying(8) COLLATE pg_catalog."default" NOT NULL DEFAULT ''::bpchar,
    py character varying(8) COLLATE pg_catalog."default" NOT NULL DEFAULT ''::bpchar,
    CONSTRAINT x9_gnzjfh_pkey PRIMARY KEY (wz)
)

这里面的内容可以通过区位码等方法导入(看具体语言支持情况)。

二、检索代码

一个函数。

CREATE OR REPLACE FUNCTION public.x9_zjfh(
  str character varying)
    RETURNS character varying
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE PARALLEL UNSAFE
AS $BODY$
-- Description: 助记符号 
-- SELECT X9_ZJFH('华岳软件126');
DECLARE
  s1 char(1);
   s2 char(1);
  lzf INT;
   l1 INT;
  s3 varchar(100);
BEGIN
   lzf:=length($1);
   l1:=1;
   s3:='';
  WHILE l1 <= lzf LOOP
    s1:=substring($1,l1,1);
    l1:=l1 + 1;
    s2:='';
    SELECT py INTO s2 FROM x9_gnzjfh WHERE wz = s1;
    IF NOT s2 IS NULL THEN
      s3:=s3 || s2;
      CONTINUE;
    END IF;
  END LOOP;
  RETURN s3;
END;
$BODY$;

三、执行检索

SELECT X9_ZJFH('CSDN程序员技术社区')

结果:

CXYJSSQ

基础非中文部分被去掉。

四、改进

这样处理速度并不快,有更好的方法吗?

我现在这个表收录了6721个汉字,有需要可以QQ我。

相关文章
|
2月前
个人所得税计算函数的编写(plpgsql)
个人所得税计算函数的编写(plpgsql)
|
5月前
|
自然语言处理 数据挖掘 Python
10 个有用的 Python 字符串函数
10 个有用的 Python 字符串函数
84 0
|
12月前
|
Python
正则表达式——re库的一些常用函数
正则表达式——re库的一些常用函数
|
SQL 自然语言处理
LeetCode SQL专项练习(3) 字符串处理函数/正则
LeetCode SQL专项练习(3) 字符串处理函数/正则
157 0
|
Python
python实现正则表达式 包含函数讲解
python实现正则表达式 包含函数讲解
62 0
python实现正则表达式 包含函数讲解
|
SQL 存储 关系型数据库
MySQL基础(SQL 字符串函数 数值函数 日期函数 流程函数)
1.Mysql下载安装启动 2.图形化界面工具 3.SQL 1.DDL 2.DML 3.DQL 4.DCL 1.管理用户 2.权限控制 4.函数 字符串函数 数值函数 日期函数 流程函数
MySQL基础(SQL 字符串函数 数值函数 日期函数 流程函数)
|
Python
Python 自写函数内容实现大小写转换(含详细注释解析)
Python 自写函数内容实现大小写转换(含详细注释解析)
328 0
Python 自写函数内容实现大小写转换(含详细注释解析)
【LeetCode-SQL专项突破】-第3天:字符串处理函数/正则
【LeetCode-SQL专项突破】-第3天:字符串处理函数/正则
128 0
【LeetCode-SQL专项突破】-第3天:字符串处理函数/正则
利用 PLpgSQL 编写UDF练习题
利用 PLpgSQL 编写UDF练习题
81 0