Ver Mensaje Individual
  #4 (permalink)  
Antiguo 15/10/2012, 03:09
GeriReshef
 
Fecha de Ingreso: julio-2012
Ubicación: Israel
Mensajes: 360
Antigüedad: 8 años, 8 meses
Puntos: 40
Respuesta: como hacer un replace con expresiones regulares

Espero que entiendo el problema.
Hay que cambiar la "cola" de las cadenas en './'
si es '?attachment_id=XXXX' (los X's representan digitos):
Código SQL:
Ver original
  1. CREATE TABLE #T1(S VARCHAR(MAX));
  2. INSERT INTO #T1 SELECT 'http://androiadn.com/?attachment_id=1';
  3. INSERT INTO #T1 SELECT 'http://androiadn.com/?attachment_id=2';
  4. INSERT INTO #T1 SELECT 'http://androiadn.com/?attachment_id=3';
  5. INSERT INTO #T1 SELECT 'http://androiadn.com/?attachment_id=16';
  6. INSERT INTO #T1 SELECT 'http://androiadn.com/?attachment_id=12352353';
  7.  
  8. DECLARE @S VARCHAR(MAX);
  9. SET     @S='?attachment_id=';
  10. WITH T AS
  11. (SELECT PatIndex('%'+@S+'%',S) N,
  12.         *
  13. FROM    #T1)
  14. SELECT  S,
  15.         LEFT(S,N-1)+'./' S1
  16. FROM    T
  17. WHERE   N>0
  18.         AND IsNumeric(RIGHT(S,Len(S)-N-Len(@S)+1))=1;
No conosco el tema de las expresiones regulares,
de lo que yo se- TSQL no los apoya,
y para obtener una solución sistematica hay que implicar código de CLR (otro tema que tampoco conosco).
__________________
El Castellano no es mi lengua materna: discúlpenme por los errores gramaticales.
Mi blog