Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server Sql Server iError函数_Sql Server_Dax - Fatal编程技术网

Sql server Sql Server iError函数

Sql server Sql Server iError函数,sql-server,dax,Sql Server,Dax,我有一个函数,返回公式的格式。它的某些部分---- if(CHARINDEX(@fieldname,@formula)0) 开始 声明@previouschar char=SUBSTRING(@formula,CHARINDEX(@fieldname,@formula)-1,1), @nextchar char=SUBSTRING(@formula,CHARINDEX(@fieldname,@formula)+len(@fieldname),1) 如果(@previouschar在('[',']

我有一个函数,返回公式的格式。它的某些部分----

if(CHARINDEX(@fieldname,@formula)0)
开始
声明@previouschar char=SUBSTRING(@formula,CHARINDEX(@fieldname,@formula)-1,1),
@nextchar char=SUBSTRING(@formula,CHARINDEX(@fieldname,@formula)+len(@fieldname),1)
如果(@previouschar在('[',']','(',')','{','}','+','-','/','*'中)
和@nextchar in(“[”、“]”、“(”、“)”、“{”、“}”、“+”、“-”、“/”、“*”)
开始
设置@calFormula=replace(@calFormula,@fieldname,'FLD'+Convert(varchar,@flid)+'为空或FLD'+Convert(varchar,@flid)+'=''然后设置0.0其他转换(十进制(18,'+Convert(varchar,@decimalPlc)+'),FLD'+Convert(varchar,@flid)+')end')
终点
结束
设置@cnt1=@cnt1+1
终点
设置@calFormula=replace(@calFormula,[','')
设置@calFormula=replace(@calFormula,']','')
返回@calFormula
我想在Sql Server关系数据库中实现DAX的ISERROR方法,该方法将检查输入的除数是否为零,然后在计算公式中分配NULL。如何处理此问题?Sql中是否有类似ISERROR的替代方法?

当然

iError(1/0)
将返回true(因为存在错误)

iError(1/1)
将返回false(无错误)

  if(CHARINDEX(@fieldname,@formula)<>0)
            Begin         
                declare @previouschar char = SUBSTRING(@formula, CHARINDEX(@fieldname, @formula)-1, 1), 
                        @nextchar char = SUBSTRING(@formula, CHARINDEX(@fieldname ,@formula)+len(@fieldname), 1)                  
                if(@previouschar in('[',']','(',')','{','}','+','-','/','*') 
                    and @nextchar in ('[',']','(',')','{','}','+','-','/','*'))
                Begin   
                    set @calFormula= replace(@calFormula,@fieldname,' case when FLD'+Convert(varchar,@flid)+' is null OR FLD'+Convert(varchar,@flid)+'='''' then 0.0 else Convert(decimal(18,'+ Convert(varchar,@decimalPlc) +'),FLD'+Convert(varchar,@flid)+' ) end ')
                End
            end
        set @cnt1=@cnt1+1
    End

                    set @calFormula= replace(@calFormula,'[','')
                            set @calFormula= replace(@calFormula,']','')

 return @calFormula