Qu'est-ce qu'une construction dans SQL Server T-SQL qui remplacera un Char(0)
, le caractère null, incorporé dans une chaîne avec son code hexadécimal?Dans SQL Server, remplacez un Char (0), le caractère null, incorporé dans une chaîne avec son code hexadécimal
I.e.
REPLACE('t'+Char(0)+'t', Char(0), REPLACE(master.dbo.fn_varbintohexstr(0), '000000', ''))
ne renvoie pas , qu'est-ce qui fait? (Cela fonctionne déjà pour 1 à 31.)
Cette question a des réponses expliquant le problème est le classement.
Cette answer montre master.dbo.fn_varbintohexstr(0)
renverra 0x00000000
.
Quand je manuellement simplifié le Replace
intérieur à '0x00'
, tout en ajoutant une clause Collate
a réussi à avoir à travailler, comme les réponses à la question ci-dessus suggéré, mais je ne peux pas trouver une version qui fonctionne pour l'expression complète (qui alors pourrait être utilisé pour tout n, 0 à 31, sauter 9, 10 et 13).
Juste pour être complet SQL final: 'avec m que (sélectionnez 0 comme n union all select n + 1 à partir de m où n <31) mise à jour Messages ensemble MessageText = remplacer (MessageText, char (n) assembler SQL_Latin1_General_CP1_CS_AS, CONVERT (VARCHAR (10), replace (master.dbo.fn_varbintohexstr (5), '000000', ''))) de m où n n'est pas dans (9, 10, 12, 13) et MessageText comme '%' + char (n) SQL_Latin1_General_CP1_CS_AS + '%' ' –