测试环境:
- 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
函数。可以通过LPAD
和SUBSTRING
函数结合转换为二进制的方式来模拟: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 输出结果:
WutongDB 输出结果:
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 和梧桐中的测试表中数据一样,测试语句一样,就测试结果不一致。
WutongDB 输出结果:
梧桐中,经测试,该函数第二个参数需要将时分秒加上,语句: select to_date('20230511020000','yyyymmddhhmiss'); 结果: 2023-05-11 ,如下图所示:
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 输出结果:
输出结果如下图所示:
WutongDB 输出结果:
输出结果如下图所示:
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 输出结果:
输出结果如下图所示:
WutongDB 输出结果:
输出结果如下图所示:
6. to_timestamp_tz
功能说明:
to_timestamp_tz(string, format)
函数类似于to_timestamp
,但它还包含时区信息。这个函数在处理跨时区的日期和时间数据时特别有用。测试语句:
select to_timestamp_tz('2024-06-17','YYYY-MM-DD');
Vertica 输出结果:
在 vertica 中可以执行,如下图所示:
WutongDB 输出结果:
to_timestamp_tz()函数不存在,如下图所示:
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 中和开窗函数一起使用。,如下图所示:
WutongDB 输出结果:
输出结果如下图所示:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。