SQL Server中如何准确统计含前导0整数的字符长度?
在SQL Server中获取带前导零的整数字符串的准确长度
问题根源
当你直接把带前导零的数值(比如09102020)传入LEN()函数时,SQL Server会自动将其解析为整数,前导零会被忽略,导致统计的长度不符合预期。
解决方案
1. 直接以字符串形式传入
如果输入是固定的带前导零的数值,用单引号包裹成字符串,避免SQL Server的自动类型转换:
SELECT LEN('09102020') -- 返回8,符合预期 SELECT LEN('19102020') -- 返回8
2. 处理存储为整数类型的数据
如果数据本身存储为整数类型,需要先将其转换为带前导零的固定长度字符串,再统计长度:
- 使用
FORMAT()函数,指定数字格式为固定位数:SELECT LEN(FORMAT(09102020, 'D8')) -- 返回8,D8表示格式化为8位十进制字符串 - 使用
RIGHT()函数拼接补零:SELECT LEN(RIGHT('00000000' + CAST(09102020 AS VARCHAR), 8)) -- 返回8,先补8个前导零再截取最后8位
内容的提问来源于stack exchange,提问作者Azhar Sayyad
相关产品推荐
相关产品推荐

