前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SAP HANA 技能:序列生成

SAP HANA 技能:序列生成

作者头像
Adil_zhang
发布2023-05-02 09:50:26
1.1K0
发布2023-05-02 09:50:26
举报
文章被收录于专栏:Adil_zhangAdil_zhang

在HANA开发中,经常会遇到一些业务数据不连续,但是在最终输出的时候要求连续展示,尽管对应的业务数据为空。这时生成序列数据是非常重要的一步。HANA提供了多种用于生成不同类型序列的函数,以下是一些常用的序列生成函数以及它们的详细用法。

数值

小数

series_generate_decimal(start, increment, count)

生成一个包含指定数量十进制数的序列,从指定的起始值开始,按指定的增量递增。返回一个具有以下字段的表:

  • VALUE: 序列中的每个数值。

示例:

代码语言:javascript
复制
SELECT * FROM SERIES_GENERATE_DECIMAL(1.5, 0, 10);

结果:

代码语言:javascript
复制
VALUE
1.5
1.5
1.5
......

整数

series_generate_integer(start, increment, count)

生成一个包含指定数量的整数序列,从指定的起始值开始,按指定的增量递增。返回一个具有以下字段的表:

  • VALUE: 序列中的每个整数。

示例:

代码语言:javascript
复制
SELECT * FROM SERIES_GENERATE_INTEGER(1, 0, 10);

结果:

代码语言:javascript
复制
VALUE
1
1
1
....

日期

日期

series_generate_date(interval, start, end)

生成一个日期序列,从指定的起始日期开始,按指定的间隔递增,直到达到指定的结束日期。返回一个具有以下字段的表:

  • VALUE: 序列中的每个日期。

参数:

  • interval: 时间间隔。必须是一个字符串,表示间隔的大小和单位,如’interval 1 day’或’interval 2 month’。
  • start: 开始日期。必须是一个日期或日期时间字符串。
  • end: 结束日期。必须是一个日期或日期时间字符串。

示例:

代码语言:javascript
复制
SELECT * FROM SERIES_GENERATE_DATE('interval 1 day', '2020-08-25', '2020-09-03');

结果:

代码语言:javascript
复制
VALUE
2020-08-25
2020-08-26
2020-08-27
2020-08-28
....

时间

series_generate_timestamp(interval, start, end)

生成一个时间戳序列,从指定的起始时间戳开始,按指定的间隔递增,直到达到指定的结束时间戳。返回一个具有以下字段的表:

  • VALUE: 序列中的每个时间戳。

参数:

  • interval: 时间间隔。必须是一个字符串,表示间隔的大小和单位,如’interval 1 hour’或’interval 30 minute’。
  • start: 开始时间戳。必须是一个时间戳字符串。
  • end: 结束时间戳。必须是一个时间戳字符串。

示例:

代码语言:javascript
复制
SELECT * FROM SERIES_GENERATE_TIMESTAMP('interval 1 hour', '2020-08-25 13:54:30', '2020-08-25 15:54:30');

结果:

代码语言:javascript
复制
VALUE
2020-08-25 13:54:30.0000000
2020-08-25 14:54:30.0000000
2020-08-25 15:54:30.0000000

生成每周的日期序列

代码语言:javascript
复制
SELECT * FROM SERIES_GENERATE_DATE('interval 1 week', '2020-08-25', '2020-09-15');

结果:

代码语言:javascript
复制
VALUE
2020-08-25
2020-09-01
2020-09-08
2020-09-15

生成每季度的日期序列

代码语言:javascript
复制
SELECT * FROM SERIES_GENERATE_DATE('interval 3 month', '2020-01-01', '2021-01-01');

结果:

代码语言:javascript
复制
VALUE
2020-01-01
2020-04-01
2020-07-01
2020-10-01
2021-01-01

带有时区的时间

series_generate_timestamp_tz(interval, start, end, timezone)

生成一个带有时区信息的时间戳序列,从指定的起始时间戳开始,按指定的间隔递增,直到达到指定的结束时间戳。返回一个具有以下字段的表:

  • VALUE: 序列中的每个时间戳。

参数:

  • interval: 时间间隔。必须是一个字符串,表示间隔的大小和单位,如’interval 1 hour’或’interval 30 minute’。
  • start: 开始时间戳。必须是一个时间戳字符串。
  • end: 结束时间戳。必须是一个时间戳字符串。
  • timezone: 时区。必须是一个字符串,表示时区的偏移量,如’+05:30’表示印度标准时间。

示例:

代码语言:javascript
复制
SELECT * FROM SERIES_GENERATE_TIMESTAMP_TZ('interval 1 hour', '2020-08-25 13:54:30', '2020-08-25 15:54:30', '+08:00');

结果:

代码语言:javascript
复制
VALUE
2020-08-25 13:54:30.0000000 +08:00
2020-08-25 14:54:30.0000000 +08:00
2020-08-25 15:54:30.0000000 +08:00

字母序列

series_generate_alphanumeric(start, increment, count)

生成一个包含指定数量字母数字字符的序列,从指定的起始值开始,按指定的增量递增。返回一个具有以下字段的表:

  • VALUE: 序列中的每个字母数字字符。

示例:

代码语言:javascript
复制
SELECT * FROM SERIES_GENERATE_ALPHANUMERIC('A', 1, 10);

结果:

代码语言:javascript
复制
VALUE
A
B
C
D
....

唯一标识

series_generate_guid(count)

生成一个指定数量的全局唯一标识符(GUID)序列。返回一个具有以下字段的表:

  • VALUE: 序列中的每个GUID。

示例:

代码语言:javascript
复制
SELECT * FROM SERIES_GENERATE_GUID(5);

结果:

代码语言:javascript
复制
VALUE
C0B15372-6DD2-4890-83B9-75A8BAA080E9
BCC9420A-DBD7-4E23-BD43-235C1E3A1D3C
2D9F7F62-6D91-42A8-A8D5-FEF073E39A3D
3C3F03E9-FE47-4B28-8442-55995443866D
B8F7A563-10F4-4E9E-9A4F-2214A837E60A

随机数

series_generate_random(minimum, maximum, count)

生成一个包含指定数量的随机数序列,从指定的最小值和最大值之间的随机数开始,每个数字的增量为0。返回一个具有以下字段的表:

  • VALUE: 序列中的每个随机数。

示例:

代码语言:javascript
复制
SELECT * FROM SERIES_GENERATE_RANDOM(1, 100, 5);

结果:

代码语言:javascript
复制
VALUE
45
16
35
76
50

这些是SAP HANA中的一些常用的序列生成函数和它们的用法。通过使用这些函数,可以方便地生成各种类型的序列数。 后续如果有其他更多的序列生成函数,我会继续更新这篇文章。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数值
    • 小数
      • 整数
      • 日期
        • 日期
          • 时间
            • 生成每周的日期序列
              • 生成每季度的日期序列
                • 带有时区的时间
                • 字母序列
                • 唯一标识
                • 随机数
                领券
                问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档