我一直在使用这一段时间:
SUBSTRING(str_col, PATINDEX('%[^0]%', str_col), LEN(str_col))
Run Code Online (Sandbox Code Playgroud)
但是最近,我发现所有"0"字符的列都有问题,例如'00000000',因为它永远找不到匹配的非"0"字符.
我见过的另一种技术是使用TRIM:
REPLACE(LTRIM(REPLACE(str_col, '0', ' ')), ' ', '0')
Run Code Online (Sandbox Code Playgroud)
如果存在嵌入空格,则会出现问题,因为当空格变回"0"时,它们将变为"0".
我试图避免使用标量UDF.我在SQL Server 2005中发现了很多UDF的性能问题.
我有一个代表货物批次号的字符串,例如“0000AZA001B”。我只需要“AZA001B”部分。如何在 SQL Compact 中实现这一点?
我有一个问题,我正在从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'
Run Code Online (Sandbox Code Playgroud) 这就是我想使用的查询。我认为更容易看看它并看看我哪里错了:
UPDATE * FROM 'catalog_product_entity_varchar'
SET TRIM(LEADING '0' FROM 'value')
WHERE 'attribute_id' = '176';
Run Code Online (Sandbox Code Playgroud)
因此,在我的表中,有很多 attribute_id = 176 的行,并且“value”列有很多前导 0。当 attribute_id 为 176 时,我想从值中删除所有前导 0。
这有点超出我的范围,但它似乎比尝试更新任何其他方式更快。