これを試すことができますか? 2番目の結果として、文字列を接頭辞ゼロの2つの部分に分割し、最初の部分と2番目の部分の部分文字列接頭辞ゼロを結合します。 AB000C00D000900のために、それはあなたが使用するクロスは適用したくない場合は、あなたがにクエリを変更することができます
;WITH tb(S) AS (
SELECT 'ABCD00090ABC0D' UNION
SELECT '0000900' UNION
SELECT 'K0000900800' UNION
SELECT 'A0000900' UNION
SELECT 'AB00CD00900' UNION
SELECT 'AB000C00D000900' UNION
SELECT '0002981K0K'
)
SELECT s,STUFF(s,PATINDEX('%0%',s),PATINDEX('%[1-9]%',s)-PATINDEX('%0%',s),'')
,c.l+SUBSTRING(c.r,PATINDEX('%[^0]%',c.r),len(c.r))
FROM tb
CROSS APPLY(VALUES(PATINDEX('%0%',s),LEFT(s,PATINDEX('%0%',s)-1),SUBSTRING(s,PATINDEX('%0%',s),LEN(s)))) c(b,l,r)
s
--------------- -------------------- ------------------------------
0000900 900 900
0002981K0K 2981K0K 2981K0K
A0000900 A900 A900
AB00CD00900 AB900 ABCD00900
AB000C00D000900 AB900 ABC00D000900
ABCD00090ABC0D ABCD90ABC0D ABCD90ABC0D
K0000900800 K900800 K900800
ABC00D000900
にABとC00D000900を組み合わせ、その後ABと000C00D000900 に分割されます:
SELECT s,LEFT(s,PATINDEX('%0%',s)-1)+SUBSTRING(SUBSTRING(s,PATINDEX('%0%',s),LEN(s)),PATINDEX('%[^0]%', SUBSTRING(s,PATINDEX('%0%',s),LEN(s))),len(s))
FROM tb
「AB0C00D000900」はどうなりますか? – Hogan
ABC00D000900になります(最初のゼロを削除してください)。 – ImperialBert