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

Замяна на нулев знак в низ в sql

Трикът, който работи, е да СОРОВАТЕ стойността си до Latin1_General_BIN преди да използвате REPLACE и също използвайте nchar(0x00) COLLATE Latin1_General_BIN за string_pattern .

REPLACE ( низов_израз , низов_модел , замяна_на_низ)

 select 
 [Terminated]      =          N'123' + nchar(0) + N'567'                                
,[Replaced with -] = REPLACE((N'123' + nchar(0) + N'567') COLLATE Latin1_General_BIN
                                          , nchar(0x00) COLLATE Latin1_General_BIN 
                                                 ,'-')      
,[Removed]        = REPLACE((N'123' + nchar(0) + N'567') COLLATE Latin1_General_BIN
                                    , nchar(0x00)      COLLATE Latin1_General_BIN
                                            ,'')    

Ето резултата (използвайте Изход към текст):

Contains   Replaced with -   Removed
---------- ----------------- --------
123 567    123-567           123567


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Промяна на формата на датата на SQL Server DB, а не на целия сървър на дд/мм/гггг

  2. Как да съхранявам изображения в колона varbinary(max)?

  3. Проблем с комуникационния протокол на SQL Server

  4. TSQL 2005, XML DML - Актуализиране на две стойности наведнъж?

  5. SQL единична колона, разделена на множество колони