sql >> Databasteknik >  >> RDS >> Sqlserver

Byt ut en del av strängen mot motsvarande motsvarighet med versaler från cross ref temp table - tsql

Om du har dina värden som du vill använda som ersättning i en tabell som du kan utföra denna åtgärd upprepade gånger, då kan du skapa en funktion för att utföra ersättningen:

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

För att sedan söka efter data kan du använda:

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

Se SQL-fiol med demo

Som kommer att returnera:

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

Obs! Jag hittade baskoden här från @SQL Kiwi och ändrade den för att använda en funktion om detta är något du måste göra på en konsekvent basis



  1. Det går inte att uppdatera data från MySQL-databasen

  2. Hash MySQL-databasschema

  3. Tid mellan två händelser

  4. kunde inte ställa in ett fältvärde med reflektionssättare