测试工作 常用的SQL函数(持续更新)

仅记录自己在工作中常见的SQL函数(不同的数据源类型使用的函数可能不一样)

  • CAST:字段的类型转换
-- 转换字段类型
SELECT ship_mode,
  CAST(postal_code AS int) AS postal_code
FROM dp_beacon_sample_demo_uuid
group BY ship_mode,
  postal_code
ORDER BY postal_code DESC
LIMIT 5000;
  • case when:用于根据一个或多个条件返回不同的结果
-- case when
select category,
  case
    when ship_mode = 'Same Day' then 'Same Day翻译'
    when ship_mode = 'Second Class' then 'Second Class翻译'
  end as ship_mode
from dp_beacon_sample_demo_uuid
group by category
limit 1000;
  • with??? 还没学会
  • 时间转换相关:date_trunc、date_format、from_unixtime、unix_timestamp
-- date_trunc 是一个用于截断日期和时间值的 SQL 函数。 mysql不支持,presto的函数
-- date_format 是一个用于格式化日期和时间值的 SQL 函数
-- from_unixtime 是一个用于将 Unix 时间戳(以秒为单位)转换为日期和时间值的 SQL 函数
-- unix_timestamp 是一个用于获取 Unix 时间戳(以秒为单位)的 SQL 函数

select date_format(date_trunc('week',from_unixtime(unix_timestamp(order_date, 'yyyy-MM-dd HH:mm:ss'))),'%Y%m%d') as order_date_monday,
  count(distinct id) as total_id
from tdw_day_pep_order_demo_qimei36
where imp_date = '20240223'
group by date_format(date_trunc('week',from_unixtime(unix_timestamp(order_date, 'yyyy-MM-dd HH:mm:ss'))),'%Y%m%d')
order by date_format(date_trunc('week',from_unixtime(unix_timestamp(order_date, 'yyyy-MM-dd HH:mm:ss'))),'%Y%m%d') desc
  • concat:用于将两个或多个字符串连接在一起
-- concat 用于将两个或多个字符串连接在一起
select concat(country, '&', city) as country_city,
  concat('https://www.csdn.net/?spm=','1010.2135.3001.4476&ydreferer=aHR0cHM6Ly9pLmNzZG4ubmV0Lw%3D%3D') as url
  from tdw_day_pep_order_demo_qimei36
where imp_date = '20240223'
  •  locate:返回目标字符串在源字符串中首次出现的位置
  •  length:用于返回一个字符串的长度(以字节为单位)
-- locate 返回目标字符串在源字符串中首次出现的位置
-- length 用于返回一个字符串的长度(以字节为单位)
SELECT ship_mode,
  locate('Class',ship_mode),
  postal_code,
  length(postal_code)
FROM dp_beacon_sample_demo_uuid 
WHERE length(postal_code) > 0 AND locate('Class',ship_mode) > 0
LIMIT 5000;
  • SUBSTRING_INDEX:将一个字符串按照指定的分隔符拆分为一个数组,并返回指定位置的元素
-- SUBSTRING_INDEX 将一个字符串按照指定的分隔符拆分为一个数组,并返回指定位置的元素
-- SUBSTRING_INDEX(string, delimiter, count),count 是一个整数,表示要返回的元素的位置。如果 count 为正数,则从左到右计算;如果 count 为负数,则从右到左计算
select category,
  SUBSTRING_INDEX(ship_mode,' ',-1)
from dp_beacon_sample_demo_uuid
group by category
limit 1000;
  • IF:函数用于根据条件返回两个值中的一个
-- 函数用于根据条件返回两个值中的一个
-- IF(condition, value_if_true, value_if_false)

select category,
  if(length(postal_code)>0,'postal_code有值','postal_code为空')
from dp_beacon_sample_demo_uuid
limit 1000;


 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涅槃Ls

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值