zoukankan      html  css  js  c++  java
  • PCB SQL SERVER 字段模糊匹配个数 实现方法

    今天工程系统给到加投加投组件的数据规则修改,遇到需将一个字段模糊匹配的个数统计

    这类需求要平时应该很少遇到了,这里将此方法分享出来,

    一.需求如下

         例子:itempara字段中的内容是:

                    IVH板 铜镍金板 POFV板 HDI+光电板 +超长板 

                           需模糊匹配4个文本在 ServerIVH背板超长板  itempara字段中出现的次数

                            通过匹配:次数为2次

    二.C# 写SQL SERVER函数代码实现

          /// <summary>
            /// 获取like字段统计总数
            /// </summary>
            /// <param name="CurrentFied">ABCDABCGKDB</param>
            /// <param name="pendingString">A,C,D</param>
            /// <returns>得到A的个数+C的个数+D的个数</returns>
            [Microsoft.SqlServer.Server.SqlFunction(DataAccess = DataAccessKind.Read, IsDeterministic = true, Name = "getLikeCount")]
            public static SqlInt32 getLikeCount(SqlString CurrentFied, SqlString pendingString)
            {
                SqlInt32 resultInt = 0;
                string str = CurrentFied.ToString();
                var stringList = pendingString.ToString().Split(',');
                foreach (var item in stringList)
                {
                    if (!string.IsNullOrEmpty(item))
                    {
                        resultInt +=  Regex.Matches(str, item).Count;
                    }
                }
                SqlInt32 SqlResult = resultInt;
                return SqlResult;
            }

    三.SQL SERVER修改程序集与创建getLikeCount函数

       alter  ASSEMBLY SQLfunctionAssembly   
       FROM 'D:SQLClr.dll'      --改为自己C#写的dll路径填写
       WITH PERMISSION_SET = UNSAFE;   
    
       
        CREATE FUNCTION[dbo].[getLikeCount] (
        @CurrentFied NVARCHAR(max),
        @pendingString NVARCHAR(1000)
        )
        RETURNS int
        WITH EXECUTE AS CALLER        
        AS
        EXTERNAL NAME [SQLfunctionAssembly].[SQLClr.SQLfunction].[getLikeCount]    --[SQL程序集名].[命名空间.类名].[方法名]

    四.SQL 函数测试

        SQL调用函数代码:

        select dbo.getLikeCount('IVH板 铜镍金板 POFV板 HDI+光电板 +超长板 ','Server,IVH,背板,超长板')
        select dbo.getLikeCount('IVH板 + 背板 + Server+ 超长板 ','Server,IVH,背板,超长板')

        测试结果如下:  

        

  • 相关阅读:
    weblogic 的应用 常见问题处理 db2 链接不上(转载)
    WebLogic简单的备份和恢复
    linux 切换用户之后变成-bash-x.x$的解决方法
    weblogic迁移随手记
    生产环境下Centos 6.5优化配置 (装载)
    查看db2表空间使用率
    Linux 之 rsyslog 系统日志转发(转载)
    windows下定时利用bat脚本实现ftp上传和下载
    rsyslog同步history日志(转载)
    linux比较指令comm、diff、grep -Ff
  • 原文地址:https://www.cnblogs.com/pcbren/p/9599175.html
Copyright © 2011-2022 走看看