none
怎样在 SQL存储过程中 使用 CLR 及 DLL文件? RRS feed

  • 问题

  • 想做个在SQL中的中文的模糊查找.

    现在工作中需要维护一些组织机构名称,但是组织机构名称是工作人员上报的,这样就会有个性的差异.比如:"北京市昌平区第一人民医院"工作人员上报的时候会报成:北京昌平人民医院,北京昌平第一人民医院,昌平区第一人民医院 等.为了好把这些医院的档案进行维护,所以我想在新增的时候对新增的名称在数据库进行模糊查找.以前都是手动的写SQL,比如:select name from T1 where name like '%昌平%医院%',这样查找太慢了,如果有成千上万的新增名称的时候一个个去查就太浪费人力和时间了.

    所以现在想使用中科院的分词程序把 要新增的 机构名称给分开,比如把 北京市昌平区第一人民医院 分成 :北京市/昌平区/第一/人民医院

    这样我再根据条件把这几个词中的关键字:昌平,医院找出来 放在SQL中 进行查找.

    所以现在我需要的是怎么使用 中科院分词 中 的 API接口,接口文件中有dll文件及C#的事例.

    不知道是否有类似需求的老师在做这样的东西,或者知道这方面的知识的老师给点指导.

     

    以上想在SQL的查询窗口下完成,SQL Server 版本为 2008

    2011年2月15日 9:15

答案

  • 参考以下存储过程

    CREATE ASSEMBLY HandlingLOBUsingCLR
    FROM '\\MachineName\HandlingLOBUsingCLR\bin\Debug\HandlingLOBUsingCLR.dll'';
    GO
    CREATE PROCEDURE dbo.GetPhotoFromDB
    (
        @ProductPhotoID int,
        @CurrentDirectory nvarchar(1024),
        @FileName nvarchar(1024)
    )
    AS EXTERNAL NAME HandlingLOBUsingCLR.LargeObjectBinary.GetPhotoFromDB;
    GO

    HandlingLOBUsingCLR.dll的GetPhotoFromDB好比你自己的clr存储过程。你在新建项目的时候可以选择新建一个数据库项目,然后添加一个文件时候选择存储过程,然后实现你需要的功能。

    ps,不过按照你的需求实际上只需要在你查询的目标表建立全文索引,然后用CONTAINS谓词查找即可。


    family as water
    • 已建议为答案 Ai-hua Qiu 2011年2月16日 6:49
    • 已标记为答案 Ai-hua Qiu 2011年2月23日 5:16
    2011年2月15日 12:11