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

Jak usunąć akcenty i wszystkie znaki <> a..z w sql-server?

Najlepszy sposób na osiągnięcie tego jest bardzo prosty i skuteczny :

SELECT 'àéêöhello!' Collate SQL_Latin1_General_CP1253_CI_AI

co daje w wyniku „aeeohello!”

Ciąg nie może być Unicode. Jeśli masz nvarchar, po prostu prześlij go na varchar przed użyciem sortowania.

Oto funkcja, która odpowiada na potrzeby OP:

create function [dbo].[RemoveExtraChars] ( @p_OriginalString varchar(50) )
returns varchar(50) as
begin

  declare @i int = 1;  -- must start from 1, as SubString is 1-based
  declare @OriginalString varchar(100) = @p_OriginalString Collate SQL_Latin1_General_CP1253_CI_AI;
  declare @ModifiedString varchar(100) = '';

  while @i <= Len(@OriginalString)
  begin
    if SubString(@OriginalString, @i, 1) like '[a-Z]'
    begin
      set @ModifiedString = @ModifiedString + SubString(@OriginalString, @i, 1);
    end
    set @i = @i + 1;
  end

  return @ModifiedString

end

Następnie polecenie:

select dbo.RemoveExtraChars('aèàç=.32s df')

wyjścia

aeacsdf


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Operacje CRUD programu SQL Server

  2. Jak znaleźć wszystkie zależności tabeli na serwerze sql

  3. Jak uzyskać ostatnio wstawiony identyfikator?

  4. Uważaj na tabelę nowych rekordów w bazie danych sql

  5. Dlaczego użycie znaku podkreślenia w filtrze LIKE daje mi wszystkie wyniki?