sql >> Database >  >> RDS >> Sqlserver

Hoe accenten en alle tekens <> a..z in sql-server te verwijderen?

De beste manier om dit te bereiken is heel eenvoudig en efficiënt:

SELECT 'àéêöhello!' Collate SQL_Latin1_General_CP1253_CI_AI

die 'aeeohello!' uitgeeft

De tekenreeks mag geen unicode zijn. Als je een nvarchar hebt, cast deze dan naar varchar voordat je de sortering gebruikt.

Hier is een functie die beantwoordt aan de OP-behoeften:

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

Dan het commando:

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

uitgangen

aeacsdf


  1. Verzamelmethode:Trimprocedure in Oracle Database

  2. int(11) vs. int(alles anders)

  3. Hoe LOAD_FILE() werkt in MariaDB

  4. Oracle pivot-operator