更新列

使用说明

更新列选项,可以实现快速地按一定的条件或规则统一修改当前属性表中多条记录或全部记录的指定属性字段的值,方便用户对属性表数据进行录入和修改。

功能入口

打开要进行更新的属性表,可以是矢量数据集属性表,也可以是纯属性数据集,若需更新选中的单元格内容,则需先在属性表中选中待更新的单元格。

  • 单击 属性表 选项卡-> 编辑 -> 更新列 按钮,即可弹出更新列对话框。
  • 单击右键,选择更新列选项,即可弹出更新列对话框。

参数描述

  • 待更新字段 :点击右侧下拉按钮,选择需更新的字段。
  • 更新范围 :更新范围提供了整列更新、更新选中记录两种更新方式:

    • 整列更新:表示对指定的待更新字段中的所有字段值进行更新;
    • 更新选中记录:表示更新指定的待更新字段中的选中记录,即对属性表中所有选中的单元格的值按照指定的规则进行更新。
  • 数值来源: 用来指定用于更新属性表字段值的值来源,分为:统一赋值、单字段运算、双字段运算以及函数运算。
数值来源 描述
统一赋值 通过指定一个值,在指定的更新范围内的单元格的值都将更新为这个值。
单字段运算 构建某个指定的字段(更新列对话框中运算字段所指定的字段)与指定值(更新列对话框中运算因子所指定的值)的简单数学表达式,例如: SmID +100,来更新属性表中指定的更新范围内的单元格的值。
在指定的更新范围内,对某个待更新单元格所在的记录而言,取出指定的字段(运算字段)的属性值和用户指定的值(运算因子)、运算方式,构建运算方程式进行运算,返回的值就是待更新单元格更新后的值。
双字段运算 基于指定的两个字段(更新列对话框中第一运算字段第二运算字段所指定的字段),以及指定的运算方式,构建字段的简单数学表达式,例如: SmID +SmUserID,来更新属性表中指定的更新范围内的单元格的值。积木课1W在指定的更新范围内,对某个待更新单元格所在的记录而言,取出指定的两个字段(第一、第二运算字段)的属性值和用户指定的运算方式,构建运算方程式进行运算,返回的值就是待更新单元格更新后的值。
函数运算 基于指定的字段(更新列对话框中运算字段所指定的字段),按照用户指定的函数规则(更新列对话框中运算函数)构建字段的函数表达式,例如:Abs(SmID),来更新属性表中指定的更新范围内的单元格的值。
在指定的更新范围内,对某个待更新单元格所在的记录而言,取出指定的字段(运算字段)的属性值和用户指定的运算函数,构建函数表达式进行运算,返回的值就是待更新单元格更新后的值。
  • 反向: 当数值来源为单字段运算或者双字段运算时,勾选该复选框后,可以交换表达式中运算符两侧的参数位置,然后再进行表达式的运算。
  • 用来更新的值: 输入的值将赋给待更新字段。注意:当待更新字段为存在枚举值域时,可以通过枚举值和枚举描述两种方式赋值。
  • 运算字段: 当数值来源为单字段运算或者函数运算时,运算字段用来指定用于构建数学表达式或函数表达式的字段。
  • 第一运算字段、第二运算字段 :当数值来源为双字段运算时,用来指定参与构建运算表达式的两个字段。
  • 运算方式: 当数值来源为单字段运算或者双字段运算时,运算方式用来指定单字段与运算因子间或者双字段间的运算法则,可以为:加、减、乘、除、取模。
运算方式 描述
+(加) 对数值型参数而言,就是把两个数值相加,返回一个数值;对字符型参数而言,就是把两个字符连接起来,其中前面的参数在新的字符前面,字符型参数之间只有“+”运算。
-(减) 只有数值型参数才有此运算方式,运算符前面的数值减去运算符后面的数值。
×(乘) 只有数值型参数才有此运算方式,运算符前面的数值乘以运算符后面的数值。
/ (除) 只有数值型参数才有此运算方式,运算符前面的数值除以运算符后面的数值,当除数为零时,不能进行该运算,返回被除数的值。
%(取模) 只有数值型参数才有此运算方式,运算符前面的数值除以运算符后面的数值,返回余数值。当除数为零时,不能进行该运算,返回被除数的值。
  • 运算函数: 当数值来源为函数运算时,用来指定运算的函数。

    • 当数值来源为函数运算时,运算函数右侧两个文本框可用来指定函数的其他参数信息。具体说明请参见运算函数页面。
    • 当预置的函数不够用时,用户可以点击下拉列表中的更多项,在弹出的SQL表达式中编辑自定义的表达式。
  • 运算方程式: 用来显示和编辑需要构建的运算表达式。单击组合框右侧的按钮,即可弹出SQL表达式对话框,可在弹出的对话框中构建字段表达式,或在运算方程式文本框中直接输入字段表达式,SQL表达式的具体说明请参见SQL语句查询页面。在指定的更新范围内,对某个待更新单元格所在的记录而言,根据用户构建的 SQL 表达式进行运算,返回的值就是待更新单元格更新后的值。

不同数据库引擎在选择 单字段运算更新列 的运算方程式的写法有所不同,请参照以下说明:

数据源类别 注意事项
UDB 当更新字段类型为布尔型、字符型时,运算方程式前需添加ifnull()函数。
例如当待更新字段为字符型字段char_1,单字段更新时,运算因子为a,则默认运算方程式为char_1
UDBX 布尔型与字符型字段同UDB方式处理一致,在运算方程式前添加ifnull()函数。
Oracle、OracleSpatial 当更新字段为64位整型时,运算方程式中BigInt修改成number(37)。
例如当待更新字段为64位整型字段Int64_1,单字段更新时,运算因子为1,则默认表达式为nvl(Int64_1,0)+cast(1 as BigInt),需修改为nvl(Int64_1,0)+cast(1 as number(37) )。
PostGIS 、PostgreSQL ①进行单字段更新时,运算方程式前添加coalesce()函数。
②当更新字段为双精度型字段时,运算方程式中需要把Double修改成numeric。 例如当待更新字段为双精度型字段Double_1, 单字段更新时,运算因子为1,默认表达式为Double_1 + cast(1 asDouble),需修改为coalesce(Double_1,0) + cast(1 as numeric) 。
③不支持字符型字段执行更新列操作。
MySQL ①进行单字段更新时,运算方程式前添加ifnull()函数。
②当更新字段为整数型时,运算方程式中需要把Integer 修改为 signed。 例如当待更新字段为整型字段Int1,单字段字段更新时,运算因子为1,默认表达式为Int1 + cast(1 as Integer),需修改为ifnull(Int1,0) + cast(1 as signed)。
③当更新字段为浮点型时,运算方程式中浮点型的字段需要写成cast(** as decimal(38,16))。
例如当待更新字段为浮点型字段Float
1, 单字段字段更新时,运算因子为1.1,默认表达式为Float1+ cast(1.1 asDouble),需修改为ifnull(Float1,0) + cast(1.1 as decimal(38,16))。
④当更新字段为字符型、文本型、宽字符类型时,运算方程式的字符拼接不支持“
SQL Server ①进行单字段更新时,运算方程式前添加ifnull()函数。
②不支持字符型字段执行更新列操作。
③布尔型字段 ,运算方式只支持“+”、“-”,不支持其他运算符操作。

注意事项

  • 当属性表处于筛选状态时,进行更新列操作,仅会对筛选出来的记录字段值进行更新。

相关主题

编辑属性表

属性表复制粘贴

属性表更新

二进制字段编辑