[英]Concat two columns with leading zeroes in the second column value, SQL
我正在尝试从具有特定格式的第二列值的两列中合并值。 第二列的值应为“ 0000”格式。 我有这样的当前查询
SELECT
ISNULL(BatchID,'')+ISNULL(UID,'') as BatchIDUID
FROM
myTable
WHERE
id=249
这给了我输出
1509161 //BatchID = 150961 and UID = 1
它应该是格式
1509160001 //BatchID = 150961 and UID = 1
1509160022 //BatchID = 150961 and UID = 22
1509160333 //BatchID = 150961 and UID = 333
1509164444 //BatchID = 150961 and UID = 4444
使用RIGHT
SELECT
ISNULL(BatchID,'')+ISNULL(RIGHT('0000' + UID, 4),'') as BatchIDUID
FROM myTable
WHERE id=249;
一般的做法:
DECLARE @pad INT = 4;
SELECT RIGHT(REPLICATE('0', @pad) + /* column/variable */, @pad);
注意,您可以使用算术而不是将值转换为字符串来执行此操作:
select COALESCE(BatchId, 0) * 10000 + COALESCE(UId, 0)
然后可以将其转换为字符串:
select CAST(COALESCE(BatchId, 0) * 10000 + COALESCE(UId, 0) as VARCHAR(10))
这恰好适合您的值(适合整数)。 但是,您可以使用小数来支持更长的值:
select COALESCE(CAST(BatchId as DECIMAL(20, 0)), 0) * 10000 + COALESCE(UId, 0)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.