我遇到问题,我正在从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'
答案 0 :(得分:5)
如果不期望空格,那么关闭到您尝试的内容就是您所需要的:
declare @EmployeeCodeDB varchar(max)='00MJ300';
select REPLACE(LTRIM(REPLACE(@EmployeeCodeDB, '0', ' ')),' ','0')
即,将所有0
替换为空格,然后(LTRIM
)删除所有前导空格,然后将所有空格替换为0
s(因此,所有未处于领先位置的原始0
都将被还原)
结果:
MJ300
如果你的字符串中可能存在空格并且它们不是必需的,但它们不应该神奇地变成0
,那么你可以用另一个替换内部@EmployeeCodeDB
替换:{{ 1}}
答案 1 :(得分:3)
PATINDEX
的解决方案:
declare @str varchar(max)=' 00MJ300';
SELECT SUBSTRING(@str, PATINDEX('%[^0 ]%', @str), LEN(@str))
它会找到第一个不是0或空格的符号,并从该位置开始直到结束。
答案 2 :(得分:2)
declare @EmployeeCodeNET varchar(max)='MJ300';
declare @EmployeeCodeDB varchar(max)='00MJ300';
DECLARE @offset int
SELECT @offset = LEN(@EmployeeCodeDB) - LEN(@EmployeeCodeNET)
SELECT SUBSTRING(@EmployeeCodeDB, @offset+1, LEN(@EmployeeCodeNET))