Teradata SQL中数值转带前导零字符及表关联方法问询
两表关联及数值补前导零实现方案
一、给数值型字段补前导零转为定长字符
不同数据库的实现函数略有差异,以下是主流数据库的写法(以转成2位带前导零为例):
- MySQL/MariaDB:使用
LPAD()函数,自动填充前导零到指定长度
示例:LPAD(your_numeric_column, 2, '0')LPAD(2, 2, '0')返回结果'02' - SQL Server:两种常用方式
方式1:拼接固定长度的零后取右侧指定长度
方式2:使用RIGHT('00' + CAST(your_numeric_column AS VARCHAR(2)), 2)FORMAT()函数(SQL Server 2012及以上版本支持)FORMAT(your_numeric_column, '00') - Oracle:
方式1:LPAD()函数
方式2:LPAD(your_numeric_column, 2, '0')TO_CHAR()搭配格式符
(TO_CHAR(your_numeric_column, 'FM00')FM用于去除结果中的多余空格) - PostgreSQL:
方式1:转文本后用LPAD()
方式2:LPAD(your_numeric_column::TEXT, 2, '0')TO_CHAR()函数TO_CHAR(your_numeric_column, '00')
二、实现两表关联
假设自建表为my_table,数值型关联字段为num_id;他人表为other_table,带前导零的字符型关联字段为char_id。以MySQL为例,关联SQL语句如下:
SELECT m.*, o.* FROM my_table m INNER JOIN other_table o ON LPAD(m.num_id, 2, '0') = o.char_id;
注意事项:
- 如果关联字段的长度不是2位,需对应调整函数中的长度参数(比如3位就用
'000'、3) - 若他人表的字符字段存在多余空格,可添加
TRIM()处理,例如TRIM(o.char_id)
内容的提问来源于stack exchange,提问作者Yumeng Xu
相关产品推荐
相关产品推荐

