Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Sostituisci parte della stringa con l'equivalente in maiuscolo dalla tabella temporanea di riferimento incrociato - tsql

Se hai i tuoi valori che desideri utilizzare come sostituzione in una tabella in grado di eseguire questa azione ripetutamente, puoi creare una funzione per eseguire la sostituzione:

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

Quindi per interrogare i dati puoi usare:

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

Vedi SQL Fiddle con demo

Che tornerà:

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

Nota:ho trovato il codice di base qui da @SQL Kiwi e l'ho modificato per utilizzare una funzione se questo è qualcosa che dovrai fare in modo coerente