Blank、Coalesce、IsBlank 和 IsEmpty 函数

适用于: 画布应用 桌面流 Dataverse 公式列 模型驱动应用 Power Pages Power Platform 命令行界面

测试值是否为空白值,或测试是否不包含任何记录,并能创建空白值。

概述

空白 是“无值”或“未知值”的占位符。例如,如果用户尚未进行选择, 则 Combo box 控件的 Selected 属性为空 。 很多数据源可以存储和返回 NULL 值,此类值在 Power Apps 中表示为空白

Power Apps 中任何属性的值或计算的值都可以是空白值。 例如,布尔型数据的值通常是:truefalse。 不过除了这两个值以外,它还可以是指示状态未知的空白。 这跟 Microsoft Excel 很相似,Excel 工作表的单元格一开始可能是空白无内容,但是它可以包含 TRUEFALSE(等等)。 您随时可以再次清除单元格中的内容,将其返回空白状态。

空字符串 是指不包含字符的字符串。 Len 函数对于此类字符串返回零,它可以在公式中将其写为两个双引号,在 "" 之间不写入任何内容。 某些控件和数据源使用空字符串表示“无值”条件。 为了简化应用的创建,IsBlankCoalesce 函数同时测试空白值或空字符串。

IsEmpty 函数的上下文中,特定于不包含记录的表。 即使表只包含名称,而不包含任何数据,它也是一个完整的表。 一个表刚开始可能是空表,但填入记录后,就不再是空表了;如果将其中的记录删除,那么它又会变成空表。

备注

我们正处于过渡时期。 到目前为止,空白还用于报告错误,因此无法将有效的“无值”与错误区分开。 为此,目前,只有本地集合支持存储空白值。 如果在设置>即将发布的功能>试验性下面打开公式级错误管理试验性功能,则您可以在其他数据源中存储空白值。 我们正在积极完成此功能,并完成空白值与错误的正确分离。

空白

适用于: 画布应用 模型驱动应用 Dataverse 公式列

Blank 函数返回空白值。 此函数可用于在支持 NULL 值的数据源中存储这些值,进而可以从字段中有效删除所有值。

IsBlank

适用于: 画布应用 模型驱动应用

IsBlank 函数测试空白值或空字符串。 测试包括空字符串,以简化应用的创建过程,因为某些数据源和控件在不存在任何值时会使用空字符串。 要专门测试空白值,请使用 if( Value = Blank(), ... 而不是 IsBlankIsBlank 函数将空表视为非空,应使用 IsEmpty 测试表。

为现有应用启用错误处理时,考虑将 IsBlank 替换为 IsBlankOrError 以保留现有应用行为。 在添加错误处理之前,空白值用于同时表示数据库中的空值和错误值。 错误处理将两个空白解释分开,这可能会改变继续使用 IsBlank 的现有应用的行为。

IsBlank 的返回值为布尔值 truefalse

Coalesce

适用于: 画布应用 模型驱动应用

Coalesce 函数按顺序对参数求值并返回第一个值(不是空白或空字符串)。 使用此函数将空白值或空字符串替换为其他值,但保留非空白和非空字符串值不变。 如果所有参数都是空白或空字符串,函数将返回 blank,这让 Coalesce 成为将空字符串转换为空白值的好方法。

Coalesce( value1, value2 ) 是更简洁的 If( Not IsBlank( value1 ), value1, Not IsBlank( value2 ), value2 ) 等效值,并且不需要 对 value1value2 进行两次计算。 如果没有“else”公式,If 函数将返回空白

Coalesce 的所有参数必须是同一种类型;例如,不能将数字和文本字符串混合在一起。 Coalesce 的返回值属于这种常见类型。

IsEmpty

适用于: 画布应用 模型驱动应用

IsEmpty 函数用于测试表是否包含记录。 这个函数跟使用 CountRows 函数的效果相同,只不过它是检查表中的记录数是否为零。 可以结合使用 IsEmptyErrors 函数,从而检查数据源错误。

IsEmpty 的返回值为布尔值 truefalse

语法

空白()

合并值 1 [, 值 2,... ])

  • values– 必需。 要测试的值。 按顺序计算每个值,直到找到不是空白且不是空字符串的值。 不会计算这一点之后的值。

IsBlank

  • Value –必需。 要测试空白值或空字符串的值。

IsEmpty

  • Table - 必需。 要测试是否包含记录的表。

示例

空白

备注

下面的示例暂只适用于本地集合。 如果在设置>即将发布的功能>试验性下面打开公式级错误管理试验性功能,则您可以在其他数据源中存储空白值。 我们正在积极完成此功能,并完成空白值与错误的分离。

  1. 从头开始创建应用,然后添加一个 Button 控件。

  2. 将该按钮的 OnSelect 属性设置为以下公式:

    ClearCollect( Cities, { Name: "Seattle", Weather: "Rainy" } )
    
  3. 预览应用,单击或点击所添加的按钮,然后关闭预览。

  4. 文件菜单上,单击或点击集合

    此时,Cities 集合显示,其中包含一条内容为“Seattle”和“Rainy”的记录:

    显示“Seattle”对应的“Weather”字段值为“Rainy”的集合。

  5. 单击或点击后退箭头,返回到默认工作区。

  6. 添加一个 Label 控件,然后将 Text 属性设置为以下公式:

    IsBlank( First( Cities ).Weather )
    

    此标签显示 false,因为 Weather 字段包含值 ("Rainy")。

  7. 添加第二个按钮,然后将 OnSelect 属性设置为以下公式:

    Patch( Cities, First( Cities ), { Weather: Blank() } )
    
  8. 预览应用,单击或点击所添加的按钮,然后关闭预览。

    Cities 集合中第一条记录的 Weather 字段被替换成空白值,删除了之前使用的“Rainy”。

    显示“Seattle”对应的“Weather”字段值为空白的集合。

    此标签显示 true,因为 Weather 字段不再包含值。

Coalesce

公式 描述 结果
合并(空白(),1) 测试从 Blank 函数返回的值,此函数始终返回空白值。 由于第一个参数为空白,因此继续对下一个参数求值,直至找到非空白值和非空字符串。 1
合并(“”,“2”) 测试第一个参数,它是一个空字符串。 由于第一个参数是空字符串,因此继续对下一个参数求值,直至找到非空白值和非空字符串。 2
合并(Blank(),“”,Blank(),“”,“3”,“4”) Coalesce 从参数列表的开头开始,依次评估每个参数,直到找到非 值和非空字符串。 在本例中,前四个参数均返回空白或非空字符串,因此继续评估第五个参数。 第五个参数是非空白和非空字符串,因此计算在此处停止。 将返回第五个参数的值,并且不再对第六个参数求值。 3
合并(“”) 测试第一个参数,它是一个空字符串。 因为第一个参数是一个空字符串,并且没有更多参数,所以函数返回空白 空白

IsBlank

  1. 从头开始创建应用,然后添加一个文本输入控件,并将其命名为 FirstName

  2. 添加一个标签,然后将其 Text 属性设置为以下公式:

    If( IsBlank( FirstName.Text ), "First Name is a required field." )
    

    文本输入控件的 Text 属性默认设置为 "Text input"。 因为此属性包含值,所以它不是空的,标签也不会显示任何消息。

  3. 从文本输入控件中删除所有字符(包括空格)。

    由于 Text 属性不再包含任何字符,因此它是空字符串,IsBlank( FirstName.Text ) 将为 true。 现在就会显示“必填字段”这样的消息了。

若要了解如何使用其他工具执行验证,请参阅 Validate 函数和使用数据源

其他示例:

公式 描述 结果
IsBlank(空白()) 测试从 Blank 函数返回的值,此函数始终返回空白值。
IsBlank(“”) 不包含任何字符的字符串。
IsBlank(“你好”) 包含一个或多个字符的字符串。
IsBlank( AnyCollection 由于存在集合,所以即使不包含任何记录,它的值也不是空值。 要检查是不是空集合,请使用 IsEmpty
IsBlank(Mid(“你好”,17,2)) Mid 函数的起始字符超出了字符串的结束位置。 所以结果是空字符串。
IsBlank(If(false,false))) 没有 ElseResultIf 函数。 由于条件的结果始终是 false,所以 If 函数始终返回空白

IsEmpty

  1. 从头开始创建应用,然后添加一个 Button 控件。

  2. 将该按钮的 OnSelect 属性设置为以下公式:

    收集(冰淇淋, { 口味:草莓,数量:300 }, { 口味:巧克力,数量:100 } )

  3. 预览应用,单击或点击所添加的按钮,然后关闭预览。

    创建 IceCream 集合,其中包含以下数据:

    一个包含 Strawberry 和 Chocolate 口味的表,口味数量分别为 300 和 100。

    其中有两条记录,所以它不是空集。 IsEmpty(IceCream) 返回 false而 CountRows(IceCream) 返回 2

  4. 添加第二个按钮,然后将 OnSelect 属性设置为以下公式:

    Clear(IceCream)

  5. 预览应用,单击或点击第二个按钮,然后关闭预览。

    这个集合现在变成了空集:

    将 Flavor 和 Quantity 作为空集合的集合。

    Clear 函数可删除集合中的所有记录,导致集合变成空集。 IsEmpty(IceCream) 返回 true,CountRows (IceCream) 返回 0

还可以使用 IsEmpty 测试一个计算的表是不是空表,请参阅以下示例:

公式 描述 结果
IsEmpty([ 1,2,3 ]) 单列表包含三条记录,所以,它不是空表。
IsEmpty([ ]) 单列表不包含任何记录,所以它是空表。
IsEmpty(过滤器([ 1,2,3 ],值 > 5)) 单列表不包含任何大于 5 的值。 筛选器没有筛选出任何记录,所以它是空表。