Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да премахна акцентите и всички знаци <> a..z в sql-сървър?

Най-добрият начин да постигнете това е много прост и ефективен :

SELECT 'àéêöhello!' Collate SQL_Latin1_General_CP1253_CI_AI

което извежда 'aeeohello!'

Низът не трябва да е unicode. Ако имате nvarchar, просто го прехвърлете към varchar, преди да използвате Collate.

Ето функция, която отговаря на нуждите на 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

След това командата:

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

изходи

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. datetime до totalminute в sql

  2. Как да напиша UTF-8 знаци с помощта на групово вмъкване в SQL Server?

  3. Изберете изявление, за да върнете родител и безкрайни деца

  4. Удостоверяване на SQL Server срещу удостоверяване на Windows:Кое да се използва и кога

  5. SQL Server SELECT в съществуваща таблица