# 数据类型
# 数值
# 数值范围匹配
当需要查找某个指定数值范围内的数据时,就需要使用数值范围匹配来查找对应的数据。
示例:
条件 | 说明 |
---|---|
fact.[年龄]='[18~20]' | 表示年龄在[18,20]之间的数据 ,[] 表示包含左右两侧边界值 |
fact.[年龄]='[18~20)' | 表示年龄在[18,20)之间的数据 ,) 表示不包含右侧边界值 |
fact.[年龄]='(18~20]' | 表示年龄在(18,20]之间的数据 ,( 表示不包含左侧边界值 |
fact.[年龄]='(18~20)' | 表示年龄在(18,20)之间的数据 ,() 表示不包含左右两侧边界值 |
fact.[年龄]='[18~)' | 表示年龄在大于等于18岁以上的数据 ,等价于>=18 |
fact.[年龄]='(18~)' | 表示年龄在大于18岁以上的数据 ,等价于>18 |
fact.[年龄]='(~20]' | 表示年龄在小于等于18岁以下的数据 ,等价于<=18 |
fact.[年龄]='(~20)' | 表示年龄在小于18岁以下的数据 ,等价于<18 |
# 字符串
# 字符串转义符
转义符,用于表示无法在当前上下文中被键盘录入的字符(如字符串中的回车符)。
示例:
条件 | 说明 |
---|---|
\n | 换行 ,将当前位置移到下一行开头 |
\r | 回车 ,将当前位置移到下一行开头 |
\b | 退格 ,将当前位置移到下一行开头 |
\t | 水平制表 ,将当前位置移到下一行开头 |
\v | 垂直制表 ,将当前位置移到下一行开头 |
\a | 响铃 |
\\ | 代表一个反斜线字符\ |
\' | 代表一个单引号字符' |
\" | 代表一个双引号字符" |
\? | 代表一个问号? |
# 字符串通配符
在使用like
/not like
/contains
(包含)关系的条件时,系统支持使用通配符,来生成条件,查询期望的数据。
通配符 | 说明 |
---|---|
* | 匹配所有字符,比如:湖北* --表示“湖北”开头。 |
? | 匹配一个字符,比如:*有限??公司 --表示结尾是“有限某某公司”。 |
% | 匹配所有字符,这是数据库的原生匹配符,同* 。 |
_ | 匹配一个字符,这是数据库的原生匹配符,同? 。 |
\ | 转义符,当需要查询包含上述通配符时使用,比如:\** --表示匹配* 开头的数据。 |
示例:
条件 | 说明 |
---|---|
fact.[企业名称] like '*科技*' | 表示企业名称包含科技 |
fact.[企业名称] like '%科技%' | 同上 |
fact.[企业名称] like '湖北*' | 表示企业名称湖北 开头 |
fact.[企业名称] like '湖北%' | 同上 |
fact.[企业名称] like '*有限??公司' | 表示企业名称结尾是有限某某公司 |
fact.[企业名称] like '*有限__公司' | 同上 |
# 通配符与转义符
需要查找的数据中含有通配符时,必须使用转义符,才能使查找的通配符具有意义。特别注意,表达式中\
也是转义字符。
条件 | 说明 |
---|---|
fact.[企业名称] like '\\*\\*\\**' | 表示企业名称*** 开头 |
fact.[企业名称] like '*\\%*' | 表示企业名称包含% |
fact.[企业名称] like '%\\%%' | 同上 |
fact.[企业名称] like '*\\\\*' | 表示企业名称包含\ |
# 逻辑匹配
在使用*=
(包含)关系的条件时,系统支持使用字符串逻辑匹配生成条件,使用空格
、AND
或&
表示逻辑与,用OR
或|
表示逻辑或。
如可以使用fact.[企业名称] *= '加油站|成品油'
查询企业名称里包含加油站
或成品油
的企业,系统会自动将查询条件翻译为fact.[企业名称] like '*加油站*' or fact.[企业名称] like '*成品油*'
。
在以下几种场景支持使用字符串逻辑匹配:
- 在输入表达式过滤条件时,如
fact.[企业名称] *= '加油站|成品油'
- 在字段筛选组件中,TODO,link下文档
- 在其它条件输入组件中,如在参数栏中放一个输入框input1,使用包含方式匹配输入框绑定的条件字段,此时可以直接在输入框中输入逻辑匹配条件,如
武汉 AND 加油站
更多示例如下:
条件 | 说明 |
---|---|
*='武汉 责任' | 表示包含武汉 和责任 ,和*='武汉 and 责任' 等价。 |
*='武汉 半导体|上海' | 表示包含武汉 和半导体 ,或包含上海 |
*='武汉 (半导体|投资)' | 表示包含武汉 和半导体 ,或包含武汉 和投资 |
*='武汉 "(半导体|导体)'" | 表示包含武汉 和(半导体|导体) |
*='武汉 "\"半导体|导体\""' | 表示包含武汉 和"半导体|导体" |
"
扩起来的内容,会当一个完整的搜索块使用"
括起的内容里面有"
时,用\
转义
# 维项匹配
数据库中多数的维都有层次关系,比如像时间、省份等。表示维项多选值时有两种表示方式,第一种是fact.[区划代码]='["420000","430000"]'
,第二种是fact.[区划代码]="420000|430000"
,对于第二种方式可以更换操作符同样能表示。可以更换的操作符有,
,;
,&
,\n
,\r
,如下示例所示。!=
、==
以及!==
的多选值表示方式也支持上述所描述方式。
示例:
条件 | 示例 |
---|---|
fact.[区划代码]='420000' | 420000代码表示湖北省,表示包含湖北省(包含下级) 的数据 |
fact.[区划代码]='["420000","430000"]' | 支持多选,430000表示湖南省,表示包含湖北省(包含下级)或湖南省(包含下级) 的数据 |
fact.[区划代码]="420000|430000" | 同上 |
fact.[标签]="A001&A002" | 标签为A001和A002同时满足。表示and关系的两个值条件,多用于标签条件。 |
fact.[区划代码]!='420000' | 表示不包含湖北省(包含下级) 的数据 |
fact.[区划代码]!='["420000","430000"]' | 表示不包含湖北省(包含下级)和湖南省(包含下级) 的数据 |
fact.[区划代码]=='420000' | 表示只等于湖北省(不包含下级) 的数据 |
fact.[区划代码]=='["420000","43000"]' | 表示只等于湖北省(不包含下级)或湖南省(不包含下级) 的数据 |
fact.[区划代码]!=='420000' | 表示只不等于湖北省(不包含下级) 的数据 |
fact.[区划代码]!=='["420000","430000"]' | 表示只不等于湖北省(不包含下级)和湖南省(不包含下级) 的数据 |
# 日期
# 日期范围匹配
当需要查找某个日期范围内的数据时,需要使用日期范围匹配来查询所期望的数据。
示例:
条件 | 说明 |
---|---|
fact.[上映日期].[年]='[2019~2020]' | 表示日期为[20190101~20200101] 之间的数据 |
fact.[上映日期].[年]='[2019~]' | 表示日期为20190101及以后 的数据,等价于>=20190101 |
fact.[上映日期].[年]='[~2020]' | 表示日期为20200101及以前 的数据,等价于<=20200101 |
fact.[上映日期].[年月]='[201901~202008]' | 表示日期为[20190101~20200801] 的数据 |
fact.[上映日期].[年月]='[201902~]' | 表示日期为20190201及以后 的数据,等价于>=20190201 |
fact.[上映日期].[年月]='[~202008]' | 表示日期为20200801及以前 的数据,等价于<=20200801 |
fact.[上映日期].[年月日]='[20190101~20190701]' | 表示日期为[20190101~20190701] 之间的数据 |
fact.[上映日期].[年月日]='[20190101~]' | 表示日期20190101及以后 的数据,等价于 >='20190101' |
fact.[上映日期].[年月日]='[~20190701]' | 表示日期20190701及以前 的数据,等价于 <='20190701' |
fact.[上映日期].[日期]='[20190101 08:30:00~20190701 09:00:00]' | 表示日期为[20190101 08:30:00~20190701 09:00:00] 之间的数据,时间使用24小时制 |
fact.[上映日期]='[09:00:00~12:30:00]' | 表示每天9:00到12:30 的数据,时间使用24小时制 |
fact.[上映日期]='[21:00:00~03:30:00]' | 表示每天21:00到次日凌晨03:30 的数据 |
fact.[上映日期]='[21:00:00~21:00:00]' | 表示每天21:00这一时刻 的数据 |
# 布尔
布尔值有两个值:真和假,值为真用true
,值为假用false
。也可以使用其他数据类型进行布尔值的转换,如下所示:
数据类型 | 转换结果 |
---|---|
任何非零数字 | true |
0 | false |
任何非空字符串 | true |
""(空字符串) | false |
示例:
条件 | 示例 |
---|---|
if($XSSL,fact.[销售数量]>$XSSL,true) | 表示销售数量为参数中的销售数量时,输出大于该参数的销售数量,否则输出全部销售数量 |
if(fact.[销售数量] IS NOT NULL,[销售数量],0) | 表示销售数量不为空时,输出为销售数量的数据,否则输出0 |
0条评论
评论