Blank、Coalesce、IsBlank 和 IsEmpty 函数

适用于:画布应用桌面流 Dataverse 公式列模型驱动应用 Power Platform CLI

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

概述

Blank 是“空值”或“未知值”的占位符。例如,如果用户未进行选择,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

语法

Blank()

Coalesce( Value1 [, Value2, ... ] )

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

IsBlank( Value )

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

IsEmpty( Table )

  • 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

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

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() ) 测试从 Blank 函数返回的值,此函数始终返回空白值。 true
IsBlank( "" ) 不包含任何字符的字符串。 true
IsBlank( "Hello" ) 包含一个或多个字符的字符串。 false
IsBlank( AnyCollection ) 由于存在集合,所以即使不包含任何记录,它的值也不是空值。 要检查是不是空集合,请使用 IsEmpty false
IsBlank( Mid( "Hello", 17, 2 ) ) Mid 函数的起始字符超出了字符串的结束位置。 所以结果是空字符串。 true
IsBlank( If( false, false ) ) 没有 ElseResultIf 函数。 由于条件的结果始终是 false,所以 If 函数始终返回空白 true

IsEmpty

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

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

    Collect( IceCream, { Flavor: "Strawberry", Quantity: 300 }, { Flavor: "Chocolate", Quantity: 100 } )

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

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

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

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

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

    Clear( IceCream )

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

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

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

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

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

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