sql >> Database teknologi >  >> RDS >> Sqlserver

Hvordan fjerner man accenter og alle tegn <> a..z i sql-server?

Den bedste måde at opnå dette på er meget enkel og effektiv :

SELECT 'àéêöhello!' Collate SQL_Latin1_General_CP1253_CI_AI

som udsender 'aeeohello!'

Strengen må ikke være unicode. Hvis du har en nvarchar, skal du bare støbe den til varchar, før du bruger sorteringen.

Her er en funktion, der opfylder OP-behovene :

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

Derefter kommandoen:

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

udgange

aeacsdf


  1. MariaDB RTRIM() vs RTRIM_ORACLE():Hvad er forskellen?

  2. Alternative Oracle-drivere til .net

  3. MIN() vs MINST() i MySQL:Hvad er forskellen?

  4. Søvnfunktion i ORACLE