# 查找与替换
#
功能说明
在查看属性表时,可查询并替换属性值内容。若用户希望对部分数据进行批量替换,可先“查询”符合条件的属性记录,再通过“替换”或“高级替换”功能,批量修改属性内容。
在实际应用中,有时需要进行多次查找与替换操作,实现属性表的批量编辑。
例如,当“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 | 返回毫秒数 |