Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2349123
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 17:58:15

 

Interbase 中文模糊搜寻 UDF
版本 1.0.0.6
发布时间 2003-09-10


这个 UDF 包含两组(4个函数), 这两组函数的功能相同, 只是适用的汉字内码范围不同。
这些函数将直接用在 SQL 语句里, 使用非常方便。
可以按照含有读音相近的文字进行查找, 可以处理多音字, 可以查找含有某个相近读音的字的记录, 在查找姓名时特别有用。

例如:

搜寻所有名字含有与'逍遥'读音相近的记录
select * from table1 where chinesesoundlike(name,'逍遥',11)<>0

得到名字的读音编码 (类似于双拼的编码)
select name,getchinesecode(name,1) from table1


1.新增的适用于 GB 简体中文 和 BIG5 繁体中文的函数:
    GETCHINESECODE('中文',选项)
        能够得到中文读音的编码,相同的读音会得到相同的编码。
        选项: <>0:简体中文(GB), 0:繁体中文(BIG5)

    CHINESESOUNDLIKE('中文甲','中文乙',选项)
        会按『选项』的方法比较两个中文的读音是否相同或相近。
        繁体中文选项: 0:一般选项, 1:不区分ㄓ ㄔ ㄕ 与 ㄗ ㄘ ㄙ, 2:任意順序, 3:包括 1 和 2
        简体中文选项: 8:一般选项, 9:不区分Zh Ch Sh 与 z c s , 10:任意順序, 11:包括 9 和 10
        如果读音相同或相近,返回值 <> 0

2.只适用于中国大陆的 GB 简体中文(兼容以前版本):
    GBKSPCODE('中文')
        能够得到中文读音编码,相同的读音会得到相同的编码。

    GBKSOUNDLIKE('中文甲','中文乙',选项)
        会按『选项』的方法比较两个中文的读音是否相同或相近。
        简体中文选项: 0:一般选项, 1:不区分Zh Ch Sh 与 z c s , 2:任意順序, 3:包括 1和 2
        如果读音相同或相近,返回值 <> 0

安装方法:
    1.把动态链接库 VictorIbUa.dll 复制到 Interbase 的 UDF 文件夹。
    2.执行下面的 SQL 注册, 这些 UDF 函数就可以使用了:

/*****************************************************************************/
/* char *__export fn_getspcode(char *s); */
/*****************************************************************************/

DECLARE EXTERNAL FUNCTION GBKSPCODE CSTRING(80)
RETURNS CSTRING(1024) FREE_IT
ENTRY_POINT 'fn_getspcode' MODULE_NAME 'victoribua';

/*****************************************************************************/
/* short __export fn_gbksndlike(char *sstr, char *ssub, short *options); */
/* options: 0:一般选项, 1:不区分Zh Ch Sh 与 z c s , 2:任意順序, 3:包括1和2 (GBK) */
/*****************************************************************************/

DECLARE EXTERNAL FUNCTION GBKSOUNDLIKE CSTRING(256),CSTRING(256),SMALLINT
RETURNS SMALLINT BY VALUE
ENTRY_POINT 'fn_gbksndlike' MODULE_NAME 'victoribua';

/*****************************************************************************/
/* char *__export fn_getchinesecode(char *s, short *options); */
/* options: =0:BIG5, <>0:GBK */
/*****************************************************************************/

DECLARE EXTERNAL FUNCTION GETCHINESECODE CSTRING(80),SMALLINT
RETURNS CSTRING(1024) FREE_IT
ENTRY_POINT 'fn_getchinesecode' MODULE_NAME 'victoribua';

/*****************************************************************************/
/* short __export fn_chinesesndlike(char *sstr, char *ssub, short *options); */
/* options: 0:一般选项, 1:不区分Zh Ch Sh 与 z c s , 2:任意順序, 3:包括1和2 (BIG5) */
/* 以上值 + 8 (GBK) */
/*****************************************************************************/

DECLARE EXTERNAL FUNCTION CHINESESOUNDLIKE CSTRING(256),CSTRING(256),SMALLINT
RETURNS SMALLINT BY VALUE
ENTRY_POINT 'fn_chinesesndlike' MODULE_NAME 'victoribua';

/*****************************************************************************/


222,925 字节 (下载 3654 次)

相关软件:



--------------------next---------------------

阅读(1501) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~