Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana cara menghapus aksen dan semua karakter <> a..z di sql-server?

Cara terbaik untuk mencapai ini sangat sederhana dan efisien :

SELECT 'àéêöhello!' Collate SQL_Latin1_General_CP1253_CI_AI

yang menampilkan 'aeeohello!'

String tidak boleh unicode. Jika Anda memiliki nvarchar, masukkan saja ke varchar sebelum menggunakan collate.

Berikut adalah fungsi yang menjawab kebutuhan 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

Kemudian, perintahnya:

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

keluaran

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. Bagaimana Anda mengembalikan nama kolom dari sebuah tabel?

  2. T-SQL mendapatkan jumlah hari kerja antara 2 tanggal

  3. Bagaimana saya bisa mendapatkan daftar tabel dalam prosedur tersimpan?

  4. Perbaiki Error Msg 4151 "Tipe argumen pertama ke NULLIF tidak dapat menjadi konstanta NULL karena tipe argumen pertama harus diketahui" di SQL Server

  5. Salin tabel ke database yang berbeda pada SQL Server yang berbeda