Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Remplacer une partie de la chaîne par l'équivalent en majuscule de la table temporaire des références croisées - tsql

Si vous avez vos valeurs que vous souhaitez utiliser comme remplacement dans une table capable d'effectuer cette action à plusieurs reprises, vous pouvez créer une fonction pour effectuer le remplacement :

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

Ensuite, pour interroger les données, vous pouvez utiliser :

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

Voir SQL Fiddle avec démo

Qui retournera :

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

Remarque :J'ai trouvé le code de base ici de @SQL Kiwi et l'a modifié pour utiliser une fonction si c'est quelque chose que vous devrez faire de manière cohérente