Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zastąp część łańcucha odpowiednikiem pisanym wielkimi literami z tabeli temp cross ref - tsql

Jeśli masz wartości, których chcesz użyć jako zamienników w tabeli, które możesz wykonywać wielokrotnie, możesz utworzyć funkcję, która dokona zamiany:

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

Następnie, aby zapytać o dane, których możesz użyć:

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

Zobacz SQL Fiddle z wersją demonstracyjną

Który zwróci:

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

Uwaga:kod podstawowy znalazłem tutaj z @SQL Kiwi i zmieniłem go tak, aby używał funkcji, jeśli jest to coś, co będziesz musiał robić konsekwentnie



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tabelowa funkcja niszcząca wydajność moich zapytań

  2. Int PK sprzężenie wewnętrzne Vs Guid PK sprzężenie wewnętrzne w programie SQL Server. Plan realizacji

  3. dodawanie informacji o kodowaniu do wyniku FOR XML

  4. Rekurencyjne zapytanie w celu znalezienia rekordu nadrzędnego

  5. Zrozumienie analizatora obciążenia w celu mapowania wąskich gardeł wydajności