Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Làm cách nào để xóa dấu và tất cả các ký tự <> a..z trong sql-server?

Cách tốt nhất để đạt được điều này rất đơn giản và hiệu quả:

SELECT 'àéêöhello!' Collate SQL_Latin1_General_CP1253_CI_AI

kết quả đầu ra là 'aeeohello!'

Chuỗi không được là unicode. Nếu bạn có nvarchar, chỉ cần truyền nó sang varchar trước khi sử dụng đối chiếu.

Đây là một chức năng đáp ứng nhu cầu của 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

Sau đó, lệnh:

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

kết quả đầu ra

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. Quét ngược chỉ mục SQL Server:Hiểu, điều chỉnh

  2. Câu lệnh SQL CASE

  3. Nhóm luôn sẵn sàng của SQL Server:Cài đặt và cấu hình, Phần 1

  4. Làm cách nào để tạo một Bảng được liên kết ODBC theo cách lập trình đến Dạng xem Máy chủ SQL và nó có thể chỉnh sửa được không?

  5. Phân tích MS SQL Server cho những người lần đầu tiên nhìn thấy nó