zoukankan      html  css  js  c++  java
  • Dynamics 365(online) V9.0 多选选项集之SQL查询

    1.CRM 9.0版本引入了一个新的数据类型:多选选项集。多选项集数据类型,新建方式和建选项集字段一样,只是数据类型那选择的是多选选项集

    2.多选项集字段在数据库存储的是字符串数组

    3.查询结果

     4.SQL查询语句

    select
        mt.name
    from 实体名称
    OUTER APPLY fn_GetPickListNameByMultiple('实体名称','字段名',字段名,2052) mt

    5.fn_GetPickListNameByMultiple

    CREATE FUNCTION [dbo].[fn_GetPickListNameByMultiple] 
    (    
        @entityName NVARCHAR(200)  -- 实体名称
    , @fieldName NVARCHAR(200)     -- 字段名称
    , @fieldValue NVARCHAR(200)    -- 字段值
    , @langId int                --  语言code
    )
    RETURNS @MultiTable TABLE 
    (
    [name] nvarchar(max)
    )
    AS
    begin
        DECLARE @CurrentIndex int;
         DECLARE @NextIndex int;
         SELECT @CurrentIndex=1;
         DECLARE @Text nvarchar(max);
         DECLARE @ReturnText nvarchar(max)
         DECLARE @value nvarchar(max)
         set @ReturnText='';
         set @value='';
         set @fieldValue=replace(replace(@fieldValue,'[',''),']','')
         WHILE(@CurrentIndex<=len(@fieldValue))
             BEGIN
                 SELECT @NextIndex=charindex(',',@fieldValue,@CurrentIndex);
                 IF(@NextIndex=0 OR @NextIndex IS NULL)
                     SELECT @NextIndex=len(@fieldValue)+1;
                     SELECT @Text=substring(@fieldValue,@CurrentIndex,@NextIndex-@CurrentIndex);
                     if(@Text<>-1)
                     begin
                        SELECT DISTINCT 
                              @value=sm.value
                         FROM   entity e
                         INNER JOIN stringmap sm
                                ON e.objecttypecode = sm.objecttypecode AND
                                   sm.attributename = @fieldName AND sm.AttributeValue = @Text
                                   AND sm.LangId=@langId
                         WHERE  e.OverwriteTime=0 AND e.Name = @entityName
                         set @ReturnText=@ReturnText+@value+',';
                     end
                     SELECT @CurrentIndex=@NextIndex+1;
                 END
                 if(isnull(@fieldValue,'')='')
                 begin
                    INSERT INTO @MultiTable([name]) VALUES(null)
                 end
                 else
                 begin
                    INSERT INTO @MultiTable([name]) VALUES(substring(@ReturnText,1,len(@ReturnText)-1))
                 end
    RETURN 
    end
    GO
    View Code

    注:如有更好的查询方式,请指教,谢谢!

  • 相关阅读:
    磁盘管理
    TCP/IP四层模型
    OSI七层模型详解
    kvm虚拟机
    mount 文件挂载
    ORA-01017: 用户名/口令无效; 登录被拒绝
    mybatis配置文件形式
    Spring+mybatis整合
    xmlBean学习二
    xmlBean学习一
  • 原文地址:https://www.cnblogs.com/dmei/p/13183223.html
Copyright © 2011-2022 走看看