sql >> Databasteknik >  >> RDS >> Sqlserver

Ersätt null-tecken i en sträng i sql

Tricket som fungerar är att SAMMANSTÄLLA ditt värde till Latin1_General_BIN innan du använder REPLACE och använd även nchar(0x00) COLLATE Latin1_General_BIN för string_pattern .

REPLACE ( string_expression , string_pattern , string_replacement )

 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
                                            ,'')    

Här är resultatet (använd utdata till text):

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


  1. SQLcl-formateringsalternativ (Oracle)

  2. Aggregat är inte tillåtna i WHERE-satsen i postgreSQL-fel

  3. Väljer de senaste MySQL-raderna med MAX(tid) WHERE tid <=x

  4. Hur kan jag få Oracle-talvärden till .NET utan nollor?