sql-server – 在sql中查找字符串长度而不启动零

参见英文答案 > Removing leading zeroes from a field in a SQL statement                                    15个
我有一个问题,我正在从excel(.csv)文件上传员工代码和帐号,我将检查员工代码并更新或插入相应员工代码的帐号.但是如果员工代码以“0”开头,则csv文件不会考虑0并且只发送剩余的字符,所以当我在sql中检查它时将与表数据(Employee Code)不匹配.

我有计划匹配他们,但我不知道该怎么做.

我试过下面的查询

declare @EmployeeCodeNET varchar(max)='MJ300'; 
declare @EmployeeCodeDB varchar(max)='00MJ300';


select LTRIM(REPLACE(@EmployeeCodeDB, '0', ''))--It should return 'MJ300'
最佳答案
如果不期望空间,那么您需要的东西就是您所需要的:

declare @EmployeeCodeDB varchar(max)='00MJ300';

select REPLACE(LTRIM(REPLACE(@EmployeeCodeDB, '0', ' ')),' ','0')

也就是说,用空格替换所有0,然后(LTRIM)删除所有前导空格,然后用0替换所有空格(因此,所有未处于领先位置的原始0都将被还原)

结果:

MJ300

如果你的字符串中可能存在空格并且它们不是必需的,但它们不应该神奇地变成0,那么你可以将内部的@EmployeeCodeDB替换为另一个替换:REPLACE(@EmployeeCodeDB,”,”)

转载注明原文:sql-server – 在sql中查找字符串长度而不启动零 - 代码日志