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

Как да премахнете бели интервали от низ в SQL Server

Използване на ASCII(RIGHT(ProductAlternateKey, 1)) можете да видите, че най-десният знак в ред 2 е символ за подаване на ред или Ascii символ 10.

Товане може да да бъдат премахнати с помощта на стандартния LTrim RTrim функции.

Можете обаче да използвате (REPLACE(ProductAlternateKey, CHAR(10), '')

Може също да искате да отчетете връщане на каретка и раздели. Тези три (подаване на ред, връщане на каретка и раздели) са обичайните виновници и могат да бъдат премахнати със следното:

LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(ProductAlternateKey, CHAR(10), ''), CHAR(13), ''), CHAR(9), '')))

Ако срещнете още знаци за празно пространство, които не могат да бъдат премахнати с горното, опитайте едно или всички от следните:

--NULL
Replace([YourString],CHAR(0),'');
--Horizontal Tab
Replace([YourString],CHAR(9),'');
--Line Feed
Replace([YourString],CHAR(10),'');
--Vertical Tab
Replace([YourString],CHAR(11),'');
--Form Feed
Replace([YourString],CHAR(12),'');
--Carriage Return
Replace([YourString],CHAR(13),'');
--Column Break
Replace([YourString],CHAR(14),'');
--Non-breaking space
Replace([YourString],CHAR(160),'');

Този списък с потенциални бели интервали може да се използва за създаване на функция като :

Create Function [dbo].[CleanAndTrimString] 
(@MyString as varchar(Max))
Returns varchar(Max)
As
Begin
    --NULL
    Set @MyString = Replace(@MyString,CHAR(0),'');
    --Horizontal Tab
    Set @MyString = Replace(@MyString,CHAR(9),'');
    --Line Feed
    Set @MyString = Replace(@MyString,CHAR(10),'');
    --Vertical Tab
    Set @MyString = Replace(@MyString,CHAR(11),'');
    --Form Feed
    Set @MyString = Replace(@MyString,CHAR(12),'');
    --Carriage Return
    Set @MyString = Replace(@MyString,CHAR(13),'');
    --Column Break
    Set @MyString = Replace(@MyString,CHAR(14),'');
    --Non-breaking space
    Set @MyString = Replace(@MyString,CHAR(160),'');

    Set @MyString = LTRIM(RTRIM(@MyString));
    Return @MyString
End
Go

Което след това можете да използвате по следния начин:

Select 
    dbo.CleanAndTrimString(ProductAlternateKey) As ProductAlternateKey
from DimProducts


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Връща редове, засегнати от съхранена процедура на всяко INSERT, за да се покаже в страницата на ASP.NET

  2. SQL Server 2008 стойност за разделяне, сортиране и сливане

  3. Как да:Създайте тригер за дата на промяна на автоматично актуализиране със SQL Server 2008

  4. Защо изпълнението на този Sql оператор (с 2 свързвания на таблици) отнема 5 минути?

  5. Задача на SQL Server Agent Уведомете множество оператори при повреда