数据类型
#数值
#数值范围匹配
当需要查找某个指定数值范围内的数据时,就需要使用数值范围匹配来查找对应的数据。
示例:
| 条件 | 说明 |
|---|---|
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 |