我正在尝试将我的IP地址转换为一组3位数字,左边用0填充。我可以很容易地做到这一点:
DECLARE @merged VARCHAR(15);
SELECT @marged = COALESCE(@merged + '.', '') + RIGHT('000' + [value], 3)
FROM string_split(ip_address, '.');
但现在我想在更广泛的select语句中执行类似的操作。
SELECT Name, @merged AS IP_Address, Mac_Address
FROM some_table
但是,当我查询一个完整的表时,我不确定如何将@merged
部分放在那里。
发布于 2018-05-31 13:50:03
发布于 2018-05-31 19:34:45
您的IP地址存在特定问题,因此可以使用parse_name()
SELECT Name,
(left('000' + parse_name(Mac_Address, 4), 3) + '.' +
left('000' + parse_name(Mac_Address, 3), 3) + '.' +
left('000' + parse_name(Mac_Address, 2), 3) + '.' +
left('000' + parse_name(Mac_Address, 1), 3)
) as ip_address,
Mac_Address
FROM some_table;
如果其他解决方案使用字符串聚合,这将会更简单,性能也会更好。
https://stackoverflow.com/questions/50617412
复制相似问题