功能说明
更新列可以实现快速地按一定的条件或规则统一修改当前属性表中多条记录或全部记录的指定字段的属性值,方便批量录入或更改字段的属性值;
当属性表中有选中的单元格时,功能可用;
功能入口
- 属性表选项卡->编辑->更新列按钮。
- 工具箱->数据处理->矢量->更新列。
- 属性表窗口右键菜单->更新列按钮。
参数说明
- 待更新字段:点击右侧下拉按钮,选择需更新的字段。
- 更新范围:更新范围提供了整列更新、更新选中记录两种更新方式:
- 整列更新:表示对指定的待更新字段中的所有字段值进行更新;
- 更新选中记录:表示更新指定的待更新字段中的选中记录,即对属性表中所有选中的单元格的值按照指定的规则进行更新。
- 数值来源:用来指定用于更新字段值的值来源,包括统一赋值、单字段运算、双字段运算以及函数运算四种来源。
数值来源 | 描述 |
统一赋值 | 通过指定一个值,在指定的更新范围内的单元格的值都将更新为这个值。 |
单字段运算 |
构建某个指定的字段(更新列对话框中运算字段所指定的字段)与指定值(更新列对话框中运算因子所指定的值)的简单数学表达式,例如: SmID + 100,来更新属性表中指定的更新范围内的单元格的值。 在指定的更新范围内,对某个待更新单元格所在的记录而言,取出指定的字段(运算字段)的属性值和用户指定的值(运算因子)、运算方式,构建运算方程式进行运算,返回的值就是待更新单元格更新后的值。 |
双字段运算 |
基于指定的两个字段(更新列对话框中第一运算字段和第二运算字段所指定的字段),以及指定的运算方式,构建字段的简单数学表达式,例如: SmID + SmUserID,来更新属性表中指定的更新范围内的单元格的值。 在指定的更新范围内,对某个待更新单元格所在的记录而言,取出指定的两个字段(第一、第二运算字段)的属性值和用户指定的运算方式,构建运算方程式进行运算,返回的值就是待更新单元格更新后的值。 |
函数运算 |
基于指定的字段(更新列对话框中运算字段所指定的字段),按照用户指定的函数规则(更新列对话框中运算函数)构建字段的函数表达式,例如:Abs(SmID),来更新属性表中指定的更新范围内的单元格的值。 在指定的更新范围内,对某个待更新单元格所在的记录而言,取出指定的字段(运算字段)的属性值和用户指定的运算函数,构建函数表达式进行运算,返回的值就是待更新单元格更新后的值。 |
- 反向: 当数值来源为单字段运算或者双字段运算时,勾选该复选框后,可以交换表达式中运算符两侧的参数位置,然后再进行表达式的运算。
- 用来更新的值:输入的值将赋给待更新字段。注意:当待更新字段为存在枚举值域时,可以通过枚举值和枚举描述两种方式赋值。
- 运算字段:当数值来源为单字段运算或者函数运算时,运算字段用来指定用于构建数学表达式或函数表达式的字段。
- 第一运算字段、第二运算字段:当数值来源为双字段运算时,用来指定参与构建运算表达式的两个字段。
- 运算方式:当数值来源为单字段运算或者双字段运算时,运算方式用来指定单字段与运算因子间或者双字段间的运算法则,可以为:加、减、乘、除、取模。
运算方式 | 描述 |
+(加) |
对数值型参数而言,就是把两个数值相加,返回一个数值;对字符型参数而言,就是把两个字符连接起来,其中前面的参数在新的字符前面,字符型参数之间只有+运算。 |
-(减) |
只有数值型参数才有此运算方式,运算符前面的数值减去运算符后面的数值。 |
×(乘) |
只有数值型参数才有此运算方式,运算符前面的数值乘以运算符后面的数值。 |
/ (除) |
只有数值型参数才有此运算方式,运算符前面的数值除以运算符后面的数值,当除数为零时,不能进行该运算,返回被除数的值。 |
%(取模) |
只有数值型参数才有此运算方式,运算符前面的数值除以运算符后面的数值,返回余数值。当除数为零时,不能进行该运算,返回被除数的值。 |
- 运算函数:当数值来源为函数运算时,用来指定运算的函数。
- 当数值来源为函数运算时,运算函数右侧两个文本框可用来指定函数的其他参数信息。具体说明请参见运算函数页面。
- 当预置的函数不够用时,用户可以点击下拉列表中的更多项,在弹出的SQL表达式中编辑自定义的表达式。
- 运算方程式:用来显示和编辑需要构建的运算表达式。单击组合框右侧的按钮,即可弹出SQL表达式对话框,可在弹出的对话框中构建字段表达式,或在运算方程式文本框中直接输入字段表达式,SQL表达式的具体说明请参见SQL语句查询页面。在指定的更新范围内,对某个待更新单元格所在的记录而言,根据用户构建的 SQL 表达式进行运算,返回的值就是待更新单元格更新后的值。
不同数据库引擎在选择单字段运算更新列的运算方程式的写法有所不同,请参照以下说明:
数据源类别 | 注意事项 |
UDB |
当更新字段类型为布尔型、字符型时,运算方程式前需添加ifnull()函数。 |
UDBX |
布尔型与字符型字段同UDB方式处理一致,在运算方程式前添加ifnull()函数。 |
Oracle、OracleSpatial |
当更新字段为64位整型时,运算方程式中BigInt修改成number(37)。 |
PostGIS 、PostgreSQL |
①进行单字段更新时,运算方程式前添加coalesce()函数。 ②当更新字段为双精度型字段时,运算方程式中需要把Double修改成numeric。 ③不支持字符型字段执行更新列操作。 |
MySQL |
①进行单字段更新时,运算方程式前添加ifnull()函数。 ②当更新字段为整数型时,运算方程式中需要把Integer 修改为 signed。 ③当更新字段为浮点型时,运算方程式中浮点型的字段需要写成cast(** as decimal(38,16))。 ④当更新字段为字符型、文本型、宽字符类型时,运算方程式的字符拼接不支持||,应修改为concat(字段名/值,值/字段名)函数。 |
SQL Server |
①进行单字段更新时,运算方程式前添加ifnull()函数。 ②不支持字符型字段执行更新列操作。 ③布尔型字段 ,运算方式只支持+、-,不支持其他运算符操作。 |
相关主题