sql >> Databáze >  >> RDS >> Sqlserver

Jak odstranit akcenty a všechny znaky <> a..z na serveru SQL?

Nejlepší způsob, jak toho dosáhnout, je velmi jednoduchý a účinný :

SELECT 'àéêöhello!' Collate SQL_Latin1_General_CP1253_CI_AI

jehož výstupem je 'aeeohello!'

Řetězec nesmí být unicode. Pokud máte nvarchar, před použitím collate jej přeneste do varchar.

Zde je funkce, která odpovídá potřebám 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

Poté příkaz:

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

výstupy

aeacsdf


  1. Getting Error – ORA-01858:Na místě, kde se očekávala číslice, byl nalezen nečíselný znak

  2. MariaDB LTRIM() vs LTRIM_ORACLE():Jaký je rozdíl?

  3. dvojité výsledky v mém poli ( mysql_fetch_array )

  4. Jak se připojit k MySQL pomocí PHP