sql >> Base de Datos >  >> RDS >> Sqlserver

Reemplace parte de la cadena con el equivalente en mayúscula de la tabla temporal de referencia cruzada - tsql

Si tiene los valores que desea usar como reemplazo en una tabla capaz de realizar esta acción repetidamente, entonces podría crear una función para realizar el reemplazo:

create function replacement(@string varchar(max))
returns varchar(max)
as
begin

    with ReplaceWord(InternalWord, ExternalWord) as
    (
        select InternalValue, ExternalValue
        from capital
    )
    select @string =  REPLACE(@string, r.InternalWord, r.ExternalWord)
    from ReplaceWord r
    where CHARINDEX(r.InternalWord, @string) > 0

    return @string
end

Luego, para consultar los datos, puede usar:

SELECT dbo.replacement(i.Instrument) NewValue
FROM instrument AS i

Consulte SQL Fiddle con demostración

Que devolverá:

|                                     NEWVALUE |
------------------------------------------------
|            Merck & Co INC Common Stock USD.5 |
| Newmont Mining CORP Common Stock USD INC 1.6 |

Nota:Encontré el código base aquí de @SQL Kiwi y lo modificó para usar una función si esto es algo que tendrá que hacer de manera constante