# 查找与替换

# 功能说明

在查看属性表时,可查询并替换属性值内容。若用户希望对部分数据进行批量替换,可先“查询”符合条件的属性记录,再通过“替换”或“高级替换”功能,批量修改属性内容。

在实际应用中,有时需要进行多次查找与替换操作,实现属性表的批量编辑。

例如,当“mpArea”属性字段值大于100是,“Type”字段值赋为A,反之赋为B。编辑属性表时,需先执行“mpArea>100”条件查询,将选中记录替换为固定值A;再执行“mpArea<=100”条件查询,将选中记录替换为固定值B。

# 相关主题

(1)查询

可根据OID或SQL条件,查询符合条件的属性记录。

a、序号查询

采用序号查询时,输入序号值,点击,即可查询该序号。

输入“+”或“-”可将当前选择行移至目标位置,输入“last”,移至最后一行。如输入“+10”,点击,每次可查询序号+10的属性记录。

b、OID查询

采用OID号查询时,输入OID值,点击,即可查询该OID属性记录。

c、SQL查询

采用SQL查询时,可弹出“输入表达式”对话框,在对话框中可编辑SQL查询语句。

  • 【字段信息】:此次可罗列矢量数据中所有属性字段。鼠标左键双击某个属性字段时,可将该属性字段添加到SQL语句中;

提示:

目前仅“字符串”、“字节型”、“布尔型”、“短整型”、“长整型”、“64位长整型”、“浮点型”、“双精度型”、“日期型”、“时间型”、“邮戳型”类型属性字段可支持SQL查询。

  • 【获取属性值】:选择某个属性字段后,可统计其单值信息,并罗列在表格中。鼠标左键双击某个属性值,可将该属性值添加到SQL语句中;
  • 【运算符】:可交互选择运算符编辑SQL语句,具体用法可参考“SQL查询函数说明”;
  • 【保存SQL语句】:编辑好SQL语句后,勾选“保存SQL语句”,点击“保存”,即可保存SQL记录,以便下次重复使用;

提示:

SQL记录保存在“MapGIS安装目录\Program\SqlData.xml”文件中。

  • 【SQL记录】:保存SQL语句后,可在此处查询到已保存的SQL语句,双击可快速输入SQL语句;

(2)替换

可根据“文本”内容查找符合条件的属性记录,并替换为指定的文本内容。

1. 启动“查询替换”功能后,切换到“替换”。

2. 选择待替换的属性字段。当属性字段比较多时,可在“字段查找”中输入关键词,可模糊查询包含该关键词的属性字段;

3. 输入“文本”及“替换文本”,并可设置如下查询参数:

  • 【文本】:查询条件文本内容;
  • 【替换文本】:替换后的文本内容;
  • 【匹配部位】:设置文本查找匹配限制:
    • 完全匹配:当属性值与“文本”内容一致时符合条件;
    • 首部匹配:当属性值首部与“文本”内容一致时符合条件;
    • 尾部匹配:当属性值尾部与“文本”内容一致时符合条件;
    • 任意部位匹配:当属性值任意部位与“文本”内容一致时符合条件。
  • 【查找方向】:设置查找方向,包括“向下”和“向上”两种;
  • 【区分大小写】:勾选后,可区分大小写,反之不区分;
  • 【查找被选记录】若已选择部分属性记录,可勾选此功能。勾选后,只有选中的属性记录中符合条件的属性记录会被替换,未被选中的属性记录不会被替换。

4. 点击“查找下一处”,可查询符合条件的属性记录;点击“替换”可替换当前选中的记录,将“文本”内容替换为“替换文本”;点击“全部替换”可替换所有符合条件属性记录。

如需将“name”字段中,属性值首部为“bus”内容替换为“公交”,参数设置如下图:

(3)高级替换

高级替换中提供了“固定值替换”、“增量值替换”、“表达公式替换”、“前缀后缀替换”四种批量替换方式。

a、固定值替换

将属性字段的值替换为某一固定值。

1. 启动“查询替换”功能后,切换到“高级替换”,选择“固定值替换”方式;

2. 选择待替换的属性字段。当属性字段比较多时,可在“字段查找”中输入关键词,可模糊查询包含该关键词的属性字段;

3. 设置固定值。目前可设置为空值,或某个固定值。

提示:

设置某个固定值时,值内容需与属性字段的格式匹配,否则会替换失败。如“日期型”属性字段,固定值必须为“YYYY-MM-DD”格式。

  • 【替换被选记录】:若已选择部分属性记录,可勾选此功能。勾选后,只有选中的属性记录中符合条件的属性记录会被替换,未被选中的属性记录不会被替换。

4. 点击“下一行”,可跳转到下一条待替换的属性记录,点击“上一行”,可跳转到上一条待替换的属性记录。点击“替换”可替换当前选中的记录;点击“全部替换”可替换所有符合条件属性记录。

b、增量值替换

增量值替换是在初始值(字段的第一个值)的基础上,以设定的增量值作为累加量(每个字段逐次增加值),替换被选属性字段的值。替换结果是该字段值以初始值开始,生成按当前排序依次增加增量值的序列。例如,初始值为10,增量值为2,以OID的升序为标准,替换后ID字段的值依次变为:10、12、14、……。

1. 启动“查询替换”功能后,切换到“高级替换”,选择“增量值替换”方式;

2. 选择待替换的属性字段。当属性字段比较多时,可在“字段查找”中输入关键词,可模糊查询包含该关键词的属性字段;

提示:

增量值替换目前仅可支持 “字符串”、“字节型”、“短整型”、“长整型”、“64位长整型”、“浮点型”、“双精度型”等属性字段类型。

3. 设置“初始值”和增量值。

  • 【替换被选记录】:若已选择部分属性记录,可勾选此功能。勾选后,只有选中的属性记录中符合条件的属性记录会被替换,未被选中的属性记录不会被替换。

4. 点击“下一行”,可跳转到下一条待替换的属性记录,点击“上一行”,可跳转到上一条待替换的属性记录。点击“替换”可替换当前选中的记录;点击“全部替换”可替换所有符合条件属性记录。

c、表达式替换

1. 启动“查询替换”功能后,切换到“高级替换”,选择“表达公式替换”方式;

2. 选择待替换的属性字段。当属性字段比较多时,可在“字段查找”中输入关键词,可模糊查询包含该关键词的属性字段;

提示:

表达公式替换目前仅支持“字符串”、“字节型”、“布尔型”、“短整型”、“长整型”、“64位长整型”、“浮点型”、“双精度型”、“日期型”、“时间型”、“邮戳型”等属性字段类型。

3. 设置SQL表达式,将SQL表达式结果赋为属性值。具体用法可参考“SQL查询函数说明”;

4. 点击“下一行”,可跳转到下一条待替换的属性记录,点击“上一行”,可跳转到上一条待替换的属性记录。点击“替换”可替换当前选中的记录;点击“全部替换”可替换所有符合条件属性记录。

例如,现需将当前日期写入到“日期型”的属性字段“统计日期”中,参数设置如下所示:

d、前后缀替换

1. 启动“查询替换”功能后,切换到“高级替换”,选择“前缀后缀替换”方式;

2. 选择待替换的属性字段。当属性字段比较多时,可在“字段查找”中输入关键词,可模糊查询包含该关键词的属性字段;

提示:

目前仅“字符串”类型的属性字段可支持前后缀替换操作。

3. 设置替换方式,勾选后该方法才可用:

  • 【增加前缀】:为属性值添加统一前缀信息;
  • 【增加后缀】:为属性值添加统一后缀信息;
  • 【去前空格】:当属性值前端包含空格时,可批量删除前端空格;
  • 【去后空格】:当属性值尾部包含空格时,可批量删除尾部空格。
  • 【替换被选记录】:若已选择部分属性记录,可勾选此功能。勾选后,只有选中的属性记录中符合条件的属性记录会被替换,未被选中的属性记录不会被替换。

4. 点击“下一行”,可跳转到下一条待替换的属性记录,点击“上一行”,可跳转到上一条待替换的属性记录。点击“替换”可替换当前选中的记录;点击“全部替换”可替换所有符合条件属性记录。

# SQL查询表达式

MapGIS在进行SQL条件查询时,遵循了标准的计算机SQL查询语句。SQL查询语句变化丰富,下面以几种常用的SQL条件查询为例进行讲解。

①数值查询

对于数值类的属性字段查询可以使用“=”,“!=”,“<”,“<=”,“>”,“>=”等查询语句。

例如,查询面积“mpArea”大于500的属性记录:

mpArea>500

②模糊查询

模糊查询使用 like,通配符采用“%”。

例如,查询名称“name”为“北京大学”的属性记录,如下两种方式均可:

name='北京大学'
name LIKE '北京大学'

查询名称name后缀为“大学”的属性记录:

name LIKE '%大学'

查询名称name中任意位置包含为“大学”的属性记录:

name LIKE '%大学%'

③查询字段值为空

查询是否为空值使用 IS NULL 或 IS NOT NULL。

例如,查询名称“name”为空的属性记录:

name IS NULL

④构建函数进行查询

通过构建SQL数学表达式函数,查询符合条件的记录。

例如,查询“水稻”产量高于“小麦”产量2倍的属性记录:

水稻>小麦*2 

⑤时间查询

对“日期型”、“时间型”、“邮戳型”属性字段进行查询。

例如,查询“统计日期”在2023-1-1到2024-1-1间的属性记录,包含2023-1-1但不包含2024-1-1:

统计日期>='2023-1-1' AND 统计日期<'2024-1-1'

# SQL查询函数说明

SQL查询时通过构建SQL查询函数,查找满足指定条件的数据。MapGIS目前支持SQL查询函数包括运算符号、数学函数、字符串函数和时间函数四种类型。

(1)运算符号

运算符号是SQL查询条件的基础符号,包括常用的算术运算符、比较运算符和逻辑运算符。

类型
运算符
说明
算术运算符 + 加法
- 减法
* 乘法
/ 除法
比较运算符 = 等于
> 大于
< 小于
>= 大于等于
<= 小于等于
!= 不等于
逻辑运算符 like 使用通配符运算符将值与类似值进行比较
and 如果两个表达式都为真,则返回true
or 如果任一表达式为真,则返回true
not 反转其他布尔运算符的结果
Is Null 运算符将列的值与null值进行比较,如果比较的值为null,则返回true; 否则,它返回false

(2)数学函数

数学函数用来执行算术运算。

函数名
语法
说明
示例
Abs Abs(x) 绝对值函数。 语法:Abs(-4.5)
返回值:4.5
Exp Exp(x) 以自然对数 e 为幂的函数。 语法:Exp(2)
返回值:7.389056
Floor Floor(x) 向下舍入函数,即获得距x最近的较小整数。 语法:Floor(1.89)
返回值:1
Ceil Ceil(x) 向上舍入函数,即获得距x最近的较大整数。 语法:Ceil(1.89)
返回值:2
Sin Sin(x) 正弦函数。 语法:Sin(2)
返回值:0.909297
Cos Cos(x) 余弦函数。 语法:Cos(1)
返回值:0.540302
Tan Tan(x) 正切函数。 语法:Tan(1)
返回值:Tan(30)
Cot Cot(x) 余切函数。 语法:Cot(30)
返回值:0.642093
LN LN(x) 取自然对数。 语法:LN(9)
返回值:2.197225
Power Power(x,y) x 的 y 次方。 语法:Power(2,3)
返回值:8
Sqrt Sqrt(x) 对 x 开方。 语法:Sqrt(9)
返回值:3

提示:

MapGIS中正弦、余弦、正切、余切函数中x值单位为弧度。

(3)字符串函数

字符串函数用来对字符串或表达式进行操作。

函数名
语法
说明
示例
ASCII ASCII(input_string) 返回字符表达式最左端字符的 ASCII 代码值,input_string可以是字符串,字符串表达式或属性列 语法:ASCII('ab')
返回值:97
Chr Chr(x) 返回与所给ASCII数值参数等当的字符 语法:Chr(97)
返回值:a
Lower Lower(input_string) 将字符串中大写字母转换为小写字母 语法:Lower('XyAB')
返回值:xyab
Left Left(input_string,length) 从提供的字符串的左侧开始提取给定长度的字符 语法:Left('ABxy',3)
返回值:ABx
LTrim LTrim(input_string) 去除字符串中最左边的空格 语法:Trim(' a bcd')
返回值:a bcd
Mid Mid(input_string,startlength,length) 从字符串中startlength位置开始提取length个字符,startlength起始为0 语法:Mid('abcdef',2,3)
返回值:cde
Right Right(input_string,length) 从提供的字符串的右侧开始提取给定长度的字符 语法:Right('ABxy',3)
返回值:Bxy
Rtrim RTrim() 去除字符串中最右边的空格 语法:RTrim('a bcd ')
返回值:a bcd
Space Space(count) 以空格构造字符串,count是一个正整数,表示空格的数量 语法:Space(2)
返回值:{2个空格}
Trim Trim() 去除字符串中两端的空格 语法:Trim(' abc def ')
返回值:abc def
Upper Upper() 将字符串中小写字母转换为大写字母 语法:Upper('aBcd')
返回值:ABCD

(4)时间函数

日期函数用来处理日期和时间。

函数名 语法 说明 示例
date date() 返回当前日期 语法:Date()
返回值:2024-2-29
sysdate sysdate() 返回当前日期及时间 语法:sysdate()
返回值:2024-2-29 15:33:41
dateadd dateadd(datepart,number,date) 在日期中添加或减去指定时间间隔 语法:dateadd(dd,-3,'2024-2-24')
返回值:2024-2-21
datepart datepart(datepart,date) 返回指定日期时间的指定部分整数 语法:datepart(dd,'2024-2-12')
返回值:12

其中datepart参数说明如下表:

日期部分
缩写
说明
year yy,yyyy 返回年份
quarter qq,q 返回季度
month mm,m 返回月份
day of year dy,y 返回一年中的第几天
day dd,d 返回日
week wk,ww 返回一年中的第几周
weekday dw 返回星期几 数据型
hour hh 返回小时
minute mi,n 返回分钟
second ss,s 返回秒
millisecond ms 返回毫秒数