头图

测试环境:

  • Vertica: Vertica Analytic Database v11.1.1-22
  • WutongDB: V5.4.10.0

1. to_bitstring

  • 功能说明:

    to_bitstring(expression) 函数用于将表达式转换为对应的二进制字符串表示形式。此函数在处理需要比特级别操作或分析的数据时非常有用。

  • 测试语句:

select 
 a.msi_number
from (
    select 
    msi_number,
    left(right(to_bitstring(hex_to_binary(to_hex(cast(nr_band as int)))),13),1) flat
    from gs_test.ceshi_to_bitstring
    where nr_band!='0' 
    and length(translate(nr_band,'0123456789','')) =0 
    and  nr_band is not null )a
where a.flat='1';
  • Vertica 输出结果:

    vertica 可以直接使用该函数,给一个具体的参数( vertica)可以得到结果,而在测试语句中的图片显示,参数为 verchar 类型的字段就报错,

  • WutongDB 输出结果:

    在梧桐数据库中无此函数,如下图所示:

  • Wutong DB 5.4 替代方案:

    • 在 Wutong DB 5.4 中没有直接等效的 to_bitstring 函数。可以通过 LPADSUBSTRING 函数结合转换为二进制的方式来模拟:

      SELECT LPAD(CAST(BIT_COUNT(expression) AS VARCHAR), 13, '0') FROM table_name;
  • 函数说明:

    • LPAD(string, length, fill_string):将字符串填充到指定的长度,填充在左侧。
    • CAST(expression AS VARCHAR):将表达式转换为字符串类型。
  • Wutong DB 6 替代方案:

    • 在 Wutong DB 56 中,也没有 to_bitstring 函数,但可以使用类似的方式或通过用户自定义函数实现复杂转换:

      SELECT LPAD(CAST(BIT_COUNT(expression) AS VARCHAR), 13, '0') FROM table_name;

2. to_char

  • 功能说明:

    to_char(expression, format) 函数用于将日期、时间或数值转换为指定格式的字符串。这个函数在格式化输出数据,尤其是日期和时间数据时非常常用。

  • 测试语句:

select
    distinct a.acpt_num serv_number
from
    gs_test.ceshi_to_char a
where
    to_char(a.create_date, 'yyyymm') in ('202401')
    and called_num in ('10086')
order by
    serv_number;
  • Vertica 输出结果:

    to_char_vertica_out.png

  • WutongDB 输出结果:

    to_char_wutongdb_out.png

3. to_date

  • 功能说明:

    to_date(string, format) 函数用于将字符串转换为日期类型,格式由 format 参数指定。该函数常用于将文本表示的日期转化为可进行日期运算的日期对象。

  • 测试语句:

select
    18,
    ' 全国亲情网 ',
    to_date(create_date, 'yyyymmdd') create_date,
    count(1) as 全国亲情网
from
    gs_test.ceshi_to_date
where
    to_date(create_date, 'yyyymmdd') >= '2020-09-23'
group by
    to_date(create_date, 'yyyymmdd')
ORDER BY
    create_date;
  • Vertica 输出结果:

    在 Vertica 和梧桐中的测试表中数据一样,测试语句一样,就测试结果不一致。

    to_date_vertica_out.png

  • WutongDB 输出结果:

    梧桐中,经测试,该函数第二个参数需要将时分秒加上,语句: select to_date('20230511020000','yyyymmddhhmiss'); 结果: 2023-05-11 ,如下图所示:

    to_date_wutongdb_out.png

4. to_hex

  • 功能说明:

    to_hex(expression) 函数将表达式的值转换为其十六进制表示形式。这个函数在处理需要查看或传输数据的十六进制表示时非常有用。

  • 测试语句:

select
     $vi_day   ,       -- 统计日期
     id         ,       -- 编号
     region_code,       -- 地市编码
     region_name,       -- 地市名称
     county_code,       -- 县区编码
     county_name,       -- 县区名称
     '',                -- 片区编码
     biztownshipcode,   -- 乡镇编码
     longitude,         -- 经度
     latitude,          -- 纬度
     cell_name,         -- 小区名称
     lac_id,            -- 位置区编码
     cell_id,           -- 小区编码
     split_part( cell_id , '-', 3) ,
     '00'||split_part(cell_id , '-', 4) ,
     right(upper(lpad(to_hex(cast(to_number(tac_cd) as int)),8,'0')),4), -- 跟踪编码
     net_type   ,        -- 基站类型
     region_admini_name ,-- 位置类型
     cgi,
     frequencyband
from  bdodso.base_basic_info_day
     where net_type ='4G' and region_code in ('931','937')
     and cell_id is not null
     and tac_cd not like '% 专精特新化工 %'
     and tac_cd <>'';
  • Vertica 输出结果:

    输出结果如下图所示:

    to_hex_vertica_out.png

  • WutongDB 输出结果:

    输出结果如下图所示:

    to_hex_wutongdb_out.png

5. to_timestamp

  • 功能说明:

    to_timestamp(string, format) 函数用于将字符串转换为时间戳,格式由 format 参数指定。它通常用于将文本表示的日期和时间转换为时间戳数据类型,以便进行时间运算和比较。

  • 测试语句:

select
    distinct a.user_id,
    a.serv_number,
    a.offer_ins_id,
    a.offer_id,
    a.offer_name,
    a.create_date,
    a.valid_date,
    a.expire_date,
    a.create_org_id,
    a.create_op_id,
    b.promo_offer_ins_id,
    b.promo_id,
    b.promo_name,
    to_timestamp(
        to_char(b.dis_create_date, 'yyyymmdd') || b.dis_create_time,
        'YYYYMMDDHHMISS'
    ),
    b.dis_valid_date,
    b.dis_expire_date,
    b.dis_org_id,
    b.dis_op_id,
    b.rel_offer_id,
    b.rel_offer_name
from
    bdtmp.tb_ads_5g_offer_reduction_data_list_test_tmp01 a,
    bdtmp.tb_ads_5g_offer_reduction_data_list_test_tmp03 b
where
    a.user_id = b.user_id
    and a.offer_id = b.offer_id;
  • Vertica 输出结果:

    输出结果如下图所示:

    to_timestamp_vertica_out.png

  • WutongDB 输出结果:

    输出结果如下图所示:

    to_timestamp_wutongdb_out.png

6. to_timestamp_tz

  • 功能说明:

    to_timestamp_tz(string, format) 函数类似于 to_timestamp,但它还包含时区信息。这个函数在处理跨时区的日期和时间数据时特别有用。

  • 测试语句:

select to_timestamp_tz('2024-06-17','YYYY-MM-DD');
  • Vertica 输出结果:

    在 vertica 中可以执行,如下图所示:

    to_timestamp_tz_vertica_out.png

  • WutongDB 输出结果:

    to_timestamp_tz()函数不存在,如下图所示:

    to_timestamp_tz_wutongdb_out.png

  • Wutong DB 5.4 替代方案:

    • 在 Wutong DB 5.4 中,可以使用 TIMESTAMP WITH TIME ZONE 类型并结合 to_timestamp 函数来处理时区转换,但不能直接使用类似 to_timestamp_tz 的函数:

      SELECT to_timestamp('2024-06-17 00:00:00', 'YYYY-MM-DD HH24:MI:SS') AT TIME ZONE 'UTC';
    • 函数说明:

      • to_timestamp(string, format):将字符串转换为时间戳格式。
      • AT TIME ZONE 'timezone':将时间戳转换为指定时区的时间。
  • Wutong DB 6 替代方案:

    • 在 Wutong DB 56 中,也可以通过 to_timestamp 和时区操作组合实现类似 to_timestamp_tz 的效果:

      SELECT to_timestamp('2024-06-17 00:00:00', 'YYYY-MM-DD HH24:MI:SS') AT TIME ZONE 'UTC';

7. to_number

  • 功能说明:

    to_number(string, format) 函数用于将字符串转换为数值类型,格式由 format 参数指定。这个函数在处理存储为文本但需要作为数值进行运算的数据时非常有用。

  • 测试语句:

select
    np_number,    -- 用户号码
    valid_date,   -- 生效日期
    des_netid,    --des 网络 id 
    src_netid     --src 网络 id
from
    gs_test.ceshi_to_number
where
    valid_date >= date '2019-11-10'
    and expire_date > valid_date
    and valid_date <> expire_date
    and substr(trim(src_netid), 5, 3) in (
        '930',
        '931',
        '932',
        '933',
        '934',
        '935',
        '936',
        '937',
        '938',
        '939',
        '941',
        '943',
        '945',
        '947'
    )
    and to_number(to_char(valid_date, 'yyyymm')) = '202208'
order by
    des_netid;
  • Vertica 输出结果:

    在 vertica 中和开窗函数一起使用。,如下图所示:

    to_number_vertica_out.png

  • WutongDB 输出结果:

    输出结果如下图所示:

    to_number_wutongdb_out.png


千钧
7 声望4 粉丝

不爱美食的古玩爱好者不是一个真正的程序猿!