sql >> Databáze >  >> RDS >> Sqlserver

Nahraďte část řetězce ekvivalentem s velkými písmeny z tabulky cross ref temp - tsql

Pokud máte své hodnoty, které chcete použít jako náhradu v tabulce, můžete tuto akci provádět opakovaně, můžete vytvořit funkci pro provedení náhrady:

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

Poté k dotazu na data můžete použít:

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

Viz SQL Fiddle s ukázkou

Což se vrátí:

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

Poznámka:Základní kód jsem našel zde z @SQL Kiwi a upravil ji tak, aby používala funkci, pokud je to něco, co budete muset dělat na konzistentním základě



  1. Ukládání srbských latinských znaků do databáze

  2. Co znamená kód následující CREATE FUNCTION jako řetězec?

  3. Jak nainstalovat pgAdmin 4 na Ubuntu 20.04/18.04/16.04

  4. 3 způsoby připojení souboru MDF k serveru SQL