Ver Mensaje Individual
  #3 (permalink)  
Antiguo 09/01/2014, 14:15
GeriReshef
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 11 años, 10 meses
Puntos: 40
Respuesta: Replace de mas de un caracter.

Si existe solamente un par de caracteres:
Código SQL:
Ver original
  1. DECLARE @variable VARCHAR(MAX)='00012AB';
  2. SELECT  SUBSTRING(@variable,PatIndex('%[^0123456789]%',@variable),2);
Si existe una secuencia de caracteres:
Código SQL:
Ver original
  1. DECLARE @variable VARCHAR(MAX)='12abcd56';
  2. SELECT  Stuff('0'+LEFT(@variable,Len(@variable)-PatIndex('%[^0123456789]%',Reverse('0'+@variable+'0'))+2),1,PatIndex('%[^0123456789]%','0'+@variable+'0')-1,'');
Si existen varias secuencias de caracteres - Puedes utilizar la solucion de Libras (un bucle) o un CTE dinamico:
Código SQL:
Ver original
  1. DECLARE @variable VARCHAR(MAX)='12abcd56ef7g8';
  2. WITH CTE AS
  3. (SELECT 0 N,
  4.         REPLACE(@variable,1,'') variable
  5. UNION ALL
  6. SELECT  N+1 N,
  7.         REPLACE(variable,N+1,'') variable
  8. FROM    CTE
  9. WHERE   N<9)
  10. SELECT  Variable
  11. FROM    CTE
  12. WHERE   N=9;
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog