sql >> Databasteknik >  >> RDS >> Sqlserver

Hur tar man bort accenter och alla tecken <> a..z i sql-server?

Det bästa sättet att uppnå detta är mycket enkelt och effektivt :

SELECT 'àéêöhello!' Collate SQL_Latin1_General_CP1253_CI_AI

som utmatar 'aeeohello!'

Strängen får inte vara unicode. Om du har en nvarchar gjuter den bara till varchar innan du använder sorteringen.

Här är en funktion som svarar på OP-behoven:

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

Sedan kommandot:

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

utgångar

aeacsdf


  1. lista data till användbart format?

  2. Föråldrade funktioner att ta ur din verktygslåda – Del 1

  3. Hur SQLite Total() fungerar

  4. Observera användare som kör SQL Server 2008 och SQL Server 2008 R2