MS SQL Server 2000 中文模糊搜寻存储过程及函数

80酷酷网    80kuku.com

  server|存储过程|函数|中文

这些存储过程/函数可以在 MS SQL Server 2000 里使用,包含两组存储过程, 这两组函数的功能相同, 只是适用的汉字内码范围不同。
这些存储过程及函数支持 GBK (大陆简体中文及繁体中文) 和 BIG5 内码 (台湾及香港等的繁体中文)
这些函数将直接用在 SQL 语句里, 使用非常方便。
可以按照含有读音相近的文字进行查找, 可以处理多音字, 可以查找含有某个相近读音的字的记录, 在查找姓名时特别有用。
这些存储过程全部用 C++ Builder 编写, 并且汉字读音全部由 C++ 处理, 效率比较高, 比汉字读音储存在数据库里用 SQL 查询快很多

【授权方式】
1.本存储过程为免费软件(Freeware), 可以免费使用.
2.如果你(无论你代表个人还是实体)要发布软件或者作为商业用途, 这个软件(存储过程/函数)必须作为你的软件的功能的一部分,
不能单独发布和出售本软件(存储过程), 也不能以这个软件制作一个类似功能的软件(存储过程或函数等)来发布.
3.这个授权仅授权给你(无论你代表个人还是实体), 你不能再次授权给别人进行授权和发布.

【使用方法】
具体参数说明参考安装方法里面的 SQL 语句

得到名字的读音编码 (GBK)
select name,dbo.fn_cncode(name,8) from table1搜寻所有名字含有与'小宝'读音相近的记录, 不区分 Zh Ch Sh 与 z c s (GBK)
select * from table1 where dbo.fn_cnlike(name,'小宝',9)<>0
得到名字的读音编码 (BIG5)
select name,dbo.fn_cncode(name,0) from table1
搜寻所有名字含有与'小寶'读音相近的记录, 不区分 ㄓㄔㄕ 与 ㄗㄘㄙ (BIG5)
select * from table1 where dbo.fn_cnlike(name,'小寶',1)<>0
【安装方法】
1.把动态链接库 VictorMsUa.dll 复制到 MS SQL Server 的 Binn 文件夹。
默认位置为 C:\Program Files\Microsoft SQL Server\MSSQL\Binn
2.通过执行 SQL 语句注册存储过程,这些存储过程必须在 Master 数据库里面注册。
打开 Master 数据库,然后执行下面 SQL 语句
EXEC sp_addextendedproc 'xp_getspcode' , 'VictorMsUa.dll'
EXEC sp_addextendedproc 'xp_gbksndlike' , 'VictorMsUa.dll'
EXEC sp_addextendedproc 'xp_getchinesecode', 'VictorMsUa.dll'
EXEC sp_addextendedproc 'xp_chinesesndlike', 'VictorMsUa.dll'
3.在用户数据库里面创建对应的函数
打开用户数据库,然后执行下面的 SQL 语句
-- GBK 编码, 支持繁体中文和简体中文
-- str1: 汉字字符串, 返回值: 拼音编码 (双拼格式)
CREATE FUNCTION fn_getspcode (str1 VARCHAR(8000))
RETURNS CHAR(1024) AS
BEGIN
  DECLARE sp CHAR(1024)
  EXEC master.dbo.xp_getspcode str1, sp OUTPUT
  RETURN sp
END
go
-- GBK 编码, 支持繁体中文和简体中文
-- sstr 和 ssub 为汉字字符串, 从 sstr 里面按照读音相近规则查找 ssub
-- options: 0: 一般选项, 1:不区分Zh Ch Sh 与 z c s , 2:任意順序, 3:包括1和2 (GBK)
CREATE FUNCTION fn_gbksndlike (sstr VARCHAR(8000), ssub VARCHAR(8000), options SMALLINT)
RETURNS SMALLINT AS
BEGIN
  DECLARE v SMALLINT
  EXEC master.dbo.xp_gbksndlike sstr, ssub, options, v OUTPUT
  RETURN v
END
go
-- 支持 BIG5 和 GBK 两种汉字编码, 支持繁体中文和简体中文, 通过 options 参数设定
-- str1: 汉字字符串, 返回值: 拼音编码 (双拼格式)
-- options: 0: BIG5 编码, 8: GBK 编码
CREATE FUNCTION fn_cncode (str1 VARCHAR(8000), options SMALLINT)
RETURNS CHAR(1024) AS
BEGIN
  DECLARE sp CHAR(1024)
  EXEC master.dbo.xp_getchinesecode str1, options, sp OUTPUT
  RETURN sp
END
go
-- 支持 BIG5 和 GBK 两种汉字编码, 支持繁体中文和简体中文, 通过 options 参数设定
-- sstr 和 ssub 为汉字字符串, 从 sstr 里面按照读音相近规则查找 ssub
-- options: BIG5: 0: 一般选项, 1:不区分Zh Ch Sh 与 z c s , 2:任意順序, 3:包括1和2 (GBK)
-- GBK : 8: 一般选项, 9:不区分Zh Ch Sh 与 z c s , 10:任意順序, 11:包括1和2 (GBK)
CREATE FUNCTION fn_cnlike (sstr VARCHAR(8000), ssub VARCHAR(8000), options SMALLINT)
RETURNS SMALLINT AS
BEGIN
  DECLARE v SMALLINT
  EXEC master.dbo.xp_chinesesndlike sstr, ssub, options, v OUTPUT
  RETURN v
END
go



分享到
  • 微信分享
  • 新浪微博
  • QQ好友
  • QQ空间
点击: