sql >> Database >  >> RDS >> Sqlserver

Vervang een deel van de tekenreeks door een equivalent met hoofdletter uit de tijdelijke tabel met kruisreferenties - tsql

Als u uw waarden hebt die u als vervanging in een tabel wilt gebruiken en u deze actie herhaaldelijk gaat uitvoeren, dan kunt u een functie maken om de vervanging uit te voeren:

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

Om vervolgens de gegevens op te vragen die u kunt gebruiken:

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

Zie SQL Fiddle met demo

Welke zal terugkeren:

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

Opmerking:ik heb de basiscode hier gevonden van @SQL Kiwi en heb het gewijzigd om een ​​functie te gebruiken als dit iets is dat u op een consistente basis moet doen



  1. Sql-serverprestaties en volgorde van velden

  2. Voorkom SQL-injectieaanvallen in een Java-programma

  3. Oracle SQLDeveloper op MacOS wordt niet geopend na installatie van de juiste Java

  4. Een niet-ondertekend 64-bits nummer in de BigInt MySQL-kolom invoegen met Java en JDBC