编辑表达式
最近更新: 2024年7月19日
编辑表达式需要手动输入条件以形成规则。 利用此模式,可使用高级函数,这些函数允许您处理用于执行特定查询(如处理日期、字符串、数字字段、排序等)的值。
以下部分提供了有关如何使用表达式编辑器构建规则的信息。 请记住,用于构建规则的语法与用于添加个性化的语法不同。
使用表达式编辑器
表达式编辑器可从查询建模器 编辑表达式 按钮获得,在配置自定义条件时,该按钮可用于 属性 和 值 字段。
从 属性 字段访问 | 从 值 字段访问 |
---|---|
![]() |
![]() |
表达式编辑器提供:
- 定义了表达式的 输入字段(1)。
- 可用的 字段(2) 的列表,这些字段可在表达式中使用并对应于查询的定向维度。
- 辅助函数(3),按类别排序。
通过直接在输入字段中输入表达式来编辑表达式。 要添加字段或辅助函数,请将光标置于要添加该字段或辅助函数的表达式中,然后单击+按钮。
表达式就绪后,单击 确认 按钮。 表达式将显示在所选字段中。 要对其进行编辑,请打开表达式编辑器并进行所需的更改。
以下示例显示为 值 字段配置的表达式。 要编辑它,您需要使用 编辑表达式 按钮打开表达式编辑器。
辅助功能
利用查询编辑工具,可使用高级功能根据所需结果和操作数据的类型执行复杂筛选。 可以使用以下函数:
聚合
聚合函数用于对一组值执行计算。
名称 | 说明 | 语法 |
平均 | 返回数字类型列 的平均值 | Avg(<值>) |
计数 | 计算列 的非空值 | Count(<值>) |
CountAll | 计算返回的值(所有字段) | CountAll() |
Countdistinct | 计算列 的不同非空值 | Countdistinct(<值>) |
最大 | 返回数字、字符串或日期类型列 的最大值 | Max(<值>) |
分钟 | 返回数字、字符串或日期类型列 的最小值 | Min(<值>) |
StdDev | 返回数字、字符串或日期列 的标准偏差 | StdDev(<值>) |
StringAgg | 返回字符串类型列的值的串联,由第二个参数 中的字符分隔 | StringAgg(<值>, <字符串>) |
总和 | 返回数字、字符串或日期类型列 的值的总和 | Sum(<值>) |
日期
日期函数用于操作日期或时间值。
名称 | 说明 | 语法 |
AddDays | 向日期添加天数 | AddDays(<日期>, <数字>) |
AddHours | 向日期添加小时数 | AddHours(<日期>, <数字>) |
AddMinutes | 向日期添加分钟数 | AddMinutes(<日期>, <数字>) |
AddMonths | 向日期添加月数 | AddMonths(<日期>, <数字>) |
AddSeconds | 向日期添加秒数 | AddSeconds(<日期>, <数字>) |
AddYears | 向日期添加年数 | AddYears(<日期>, <数字>) |
ConvertNTZ | 应用定义的会话TZ ,将时间戳NTZ(不带时区的时间戳)转换为TZ(带有时区的时间戳) | ConvertNTZ (<日期+时间>) |
DateCmp | 比较两个日期 | DateCmp(<日期>,<日期>) |
DateOnly | 仅返回日期(时间为00:00)* | DateOnly(<日期>) |
Day | 返回表示日期天数的数字 | Day(<日期>) |
DayOfYear | 返回日期 年中的天数 | DayOfYear(<日期>) |
DaysAgo | 返回与当前日期对应的日期减去n天 | DaysAgo(<数字>) |
DaysAgoInt | 返回对应于当前日期减去n天 的日期(整数yyyymmdd) | DaysAgoInt(<数字>) |
DaysDiff | 两个日期之间的天数差 | DaysDiff(<结束日期>, <开始日期>) |
DaysOld | 返回日期的年龄(以天为单位) | DaysOld(<日期>) |
GetDate | 返回服务器的当前系统日期 | GetDate() |
Hour | 返回日期的小时数 | Hour(<日期>) |
HoursDiff | 返回两个日期之间的小时数之差 | HoursDiff(<结束日期>, <开始日期>) |
Minute | 返回日期的分钟数 | Minute(<日期>) |
MinutesDiff | 返回两个日期之间的分钟数之差 | MinutesDiff(<结束日期>, <开始日期>) |
Month | 返回表示日期月份的数字 | Month(<日期>) |
MonthsAgo | 返回对应于当前日期 n 个月的日期 | MonthsAgo(<数字>) |
MonthsDiff | 返回两个日期之间的月数之差 | MonthsDiff(<结束日期>, <开始日期>) |
MonthsOld | 返回日期的年龄(以月为单位) | MonthsOld(<日期>) |
Oldest | 返回范围 中最早的日期 | 最旧(<日期,日期>) |
Second | 返回日期的秒数 | Second(<日期>) |
SecondsDiff | 返回两个日期之间的秒数之差 | SecondsDiff(<结束日期>, <开始日期>) |
SubDays | 从日期减去天数 | SubDays(<日期>, <数字>) |
SubHours | 从日期减去小时数 | SubHours(<日期>, <数字>) |
SubMinutes | 从日期减去分钟数 | SubMinutes(<日期>, <数字>) |
SubMonths | 从日期减去月数 | SubMonths(<日期>, <数字>) |
SubSeconds | 从日期减去秒数 | SubSeconds(<日期>, <数字>) |
SubYears | 从日期减去年数 | SubYears(<日期>, <数字>) |
ToDate | 将日期+时间转换为日期 | ToDate(<日期 + 时间>) |
ToDateTime | 将字符串转换为日期+时间 | ToDateTime(<字符串>) |
ToTimestamp | 将字符串转换为时间戳 | ToTimestamp(<字符串>) |
ToTimeZone | 将日期+时间转换为时区 | ToTimeZone(<日期>,<时区>) |
TruncDate | 将日期+时间舍入到最接近的秒数 | TruncDate(@lastModified, <秒数>) |
TruncDateTZ | 将日期+时间舍入为以秒表示的精度 | TruncDateTZ(<日期>, <秒数>, <时区>>) |
TruncQuarter | 将日期舍入到季度 | TruncQuarter(<日期>) |
TruncTime | 将时间部分舍入到最接近的秒 | TruncTim(e<日期>, <秒数>) |
TruncWeek | 将日期舍入到周 | TruncWeek(<日期>) |
TruncYear | 将日期+时间舍入到年度的 1 月 1 日 | TruncYear(<日期>) |
WeekDay | 返回表示日期一周中某天的数字(0=星期一,6=星期日) | WeekDay(<日期>) |
Year | 返回表示日期年份的数字 | Year(<日期>) |
YearAnd Month | 返回表示日期的年份和月份的数字 | YearAndMonth(<日期>) |
年前 | 返回给定日期与当前日期之间的年数 | YearsAgo(<日期>) |
YearsDiff | 返回两个日期之间的年数之差 | YearsDiff(<结束日期>, <开始日期>) |
YearsOld | 返回日期的年龄(以年为单位) | YearsOld(<日期>) |
请注意,Dateonly 函数考虑的是服务器的时区,而不是运算符的时区。
地理位置营销
利用地理位置营销函数来操作地理值。
名称 | 说明 | 语法 |
Distance | 返回由经度和纬度定义的两点之间的距离,以度表示。 | Distance(<经度 A>, <纬度 A>, <经度 B>, <纬度 B>) |
数值
数值函数用于将文本转换为数字。
名称 | 说明 | 语法 |
Abs | 返回数字的绝对值 | Abs(<数字>) |
Ceil | 返回大于或等于某个数字的最小整数 | Ceil(<数字>) |
Floor | 返回大于或等于数字 的最大整数 | Floor(<数字>) |
Greatest | 返回两个数字中的较大者 | Greatest(<数字 1>, <数字 2>) |
Least | 返回两个数字中的较小者 | Least(<数字 1>, <数字 2>) |
Mod | 返回n1除以n2 的整数除余数 | Mod(<数字 1>, <数字 2>) |
Percent | 返回两个数字的比值,以百分比表示 | Percent(<数字 1>, <数字 2>) |
Random | 返回随机值 | Random() |
Round | 将数字舍入为 n 位小数 | Round(<数字>, <小数>) |
Sign | 返回数字的符号 | Sign(<数字>) |
ToDouble | 将整数转换为浮点 | ToDouble(<数字>) |
ToInt64 | 将浮点转换为 64 位整数 | ToInt64(<数字>) |
ToInteger | 将浮点转换为整数 | ToInteger(<数字>) |
Trunc | 将 n1 取整到 n2 位小数 | Trunc(<n1>, <n2>) |
其他
此表包含剩余的可用函数。
名称 | 说明 | 语法 |
AESEncrypt | 加密参数 中提供的字符串 | AESEncrypt(<值>) |
Case | 如果条件为true,则返回值1。 如果不存在,则返回值2. | Case(When(<条件>, <值 1>), Else(<值 2>)) |
ClearBit | 删除值中的标志 | ClearBit(<标识符>, <标识>) |
Coalesce | 如果值 1 为 0 或 null,则返回值 2,否则返回值 1 | Coalesce(<值 1>, <值 2>) |
Decode | 如果值1 =值2,则返回值3。 如果未返回值4. | Decode(<值 1>, <值 2>, <值 3>, <值 4>) |
Else | 返回值 1(只能用作 case 函数的参数) | Else(<值1>, <值2>) |
GetEmailDomain | 从电子邮件地址提取域名 | GetEmailDomain(<值>) |
GetMirrorURL | 检索镜像页面服务器的 URL | GetMirrorURL(<值>) |
Iif | 如果表达式为true,则返回值1。 如果不存在,则返回值2 | Iif(<条件>, <值 1>, <值 2>) |
IsBitSet | 指示标志是否在值中 | IsBitSet(<标识符>, <标识>) |
IsEmptyString | 如果字符串1为空,则返回值2,否则返回值3 | IsEmptyString(<值1>, <值2>, <值3>) |
NewUUID | 返回唯一ID | NewUUID() |
NoNull | 如果参数为 NULL,则返回空字符串 | NoNull(<值>) |
RowId | 返回行号 | RowId |
SetBit | 强制将标志设在值中 | SetBit(<标识符>, <标识>) |
ToBoolean | 将数字转换为布尔值 | ToBoolean(<数字>) |
When | 如果表达式为true,则返回值1。 如果不是,则返回值2(只能用作case函数的参数) | When(<条件>, <值 1>) |
字符串
字符串函数用于操作一系列字符串。
名称 | 说明 | 语法 |
AllNonNull2 | 指示所有参数是否为非 null 且不为空 | AllNonNull2(<字符串>, <字符串>) |
AllNonNull3 | 指示所有参数是否为非 null 且不为空 | AllNonNull3(<字符串>, <字符串>, <字符串>) |
Ascii | 返回字符串中第一个字符的ASCII值。 | Ascii(<字符串>) |
Char | 返回与 ASCII 代码"n"对应的字符 | Char(<数字>) |
Charindex | 返回字符串1中字符串2的位置。 | Charindex(<字符串>, <字符串>) |
数据长度 | 返回字符串 的大小(以字节为单位) | dataLength(<字符串>) |
GetLine | 返回字符串的 n(从 1 到 n)行 | GetLine(<字符串>) |
IfEquals | 如果前两个参数相等,则返回第三个参数。 如果不是,则返回最后一个参数 | IfEquals(<字符串>, <字符串>, <字符串>, <字符串>) |
IsMemoNull | 指示作为参数传递的 Memo 是否为 null | IsMemoNull(<memo>) |
JuxtWords | 将作为参数传递的字符串连接起来。 如有必要,在字符串之间添加空格。 | JuxtWords(<字符串>, <字符串>) |
JuxtWords3 | 将作为参数传递的字符串连接起来。 如有必要,在字符串之间添加空格 | JuxtWords3(<字符串>, <字符串>, <字符串>) |
Left | 返回字符串的前 n 个字符 | Left(<字符串>, <数字>) |
Length | 返回字符串 的长度 | Length(<字符串>) |
行 | 从字符串 中提取行n | Line(<字符串>,<数字>) |
Lower | 以小写形式返回字符串 | Lower(<字符串>) |
LPad | 返回左侧的已完成字符串 | LPad (<字符串>, <数字>, <字符>) |
Ltrim | 删除字符串左侧的空格 | Ltrim(<字符串>) |
Md5Digest | 返回字符串以十六进制表示的 MD5 键值 | Md5Digest(<字符串>) |
MemoContains | 指定 Memo 是否包含作为参数传递的字符串 | MemoContains(<memo>, <字符串>) |
节点值 | 从其XPath和字段数据提取XML字段的值 | NodeValue (<字符串>, <字符串>) |
Replace | 将指定字符串值的所有匹配项替换为其他字符串值。 | Replace(<字符串>,<字符串>,<字符串>) |
Right | 返回字符串的最后 n 个字符 | Right(<字符串>) |
RPad | 返回右侧的已完成字符串 | RPad(<字符串>, <数字>, <字符>) |
Rtrim | 删除字符串右侧的空格 | Rtrim(<字符串>) |
Sha256Digest | 字符串的SHA256键的十六进制表示形式。 | Sha256Digest (<字符串>) |
Sha512Digest | 字符串的SHA512键的十六进制表示形式。 | Sha512Digest (<字符串>) |
Smart | 以大写方式返回带每个单词的第一个字母的字符串 | Smart(<字符串>) |
Substring | 提取从字符串的字符n1开始的、长度为n2 的子字符串 | Substring(<字符串>, <偏移>, <长度>) |
ToString | 将数字转换为字符串 | ToString(<数字>, <数字>) |
Upper | 返回以大写表示的字符串 | Upper(<字符串>) |
VirtualLink | 如果其他两个参数相等,则返回作为参数传递的链接的外键 | VirtualLink(<数字>, <数字>, <数字>) |
VirtualLinkStr | 如果其他两个参数相等,则返回作为参数传递的链接的外键(文本) | VirtualLinkStr(<字符串>, <数字>, <数字>) |
窗口
名称 | 说明 | 语法 |
_超过__ | 执行作为第1参数输入的SQL函数调用,通过Partition或Order By作为第2参数 输入的字段 | 超过_ (<值>, <值>) (_Over_) |
Desc | 应用降序排序 | Desc(<值 1>) |
OrderBy | 对分区中的结果进行排序 | OrderBy(<值 1>) |
PartitionBy | 对表格上的查询结果进行分区 | PartitionBy(<值 1>) |
RowNum | 根据表分区和排序顺序生成行号。 | RowNum(PartitionBy(<值 1>), OrderBy(<值 1>)) |
recommendation-more-help
c39c2d00-ba9a-424b-adf9-66af58a0c34b