# 数据类型

# 数值

# 数值范围匹配

当需要查找某个指定数值范围内的数据时,就需要使用数值范围匹配来查找对应的数据。

示例:

条件 说明
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 '*成品油*'

在以下几种场景支持使用字符串逻辑匹配:

  1. 在输入表达式过滤条件时,如fact.[企业名称] *= '加油站|成品油'
  2. 在字段筛选组件中,TODO,link下文档
  3. 在其它条件输入组件中,如在参数栏中放一个输入框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条评论
评论