Замените нулевой символ в строке в sql

Я должен заменить нулевой символ в строке sql, я, может казаться, не нахожу, что правильная команда достигает этого. Я использовал замену (myString, '\0', ''), но это, кажется, не работает, любая справка была бы большой

6
задан 19 February 2010 в 17:41
поделиться

4 ответа

Используйте это:

REPLACE(myString, char(0), '')
11
ответ дан 8 December 2019 в 02:40
поделиться

Если вы объединяете значения для получения строки, используйте IsNull(value, replacement), чтобы избежать нулевых значений, или установите CONCAT_NULL_YIELDS_NULL ON, чтобы избежать нулевых строк в результате.

1
ответ дан 8 December 2019 в 02:40
поделиться

Я не совсем уверен, что не так с вашими строками, но вот несколько вещей, которые можно попробовать, вы используете varchar ?, отредактируйте вопрос, указав более подробную информацию :

если у вас есть символы NULL в строке:

declare @x varchar(10)
set @x='123'+char(0)+'456'
SELECT @x AS Has_NULL_in_it, REPLACE(@x, char(0), '') AS Has_NULL_removed

OUTPUT:

Has_NULL_in_it Has_NULL_removed
-------------- ----------------
123 456        123456

(1 row(s) affected)

Если вы не можете определить символ в строке, попробуйте этот ASCII:

DECLARE @y varchar(10),@c int
set @y='123'+char(0)+'456'
set @c=0
WHILE @c<LEN(@y)
BEGIN
    SET @c=@c+1
    PRINT CONVERT(varchar(5),@c)+' - '+SUBSTRING(@y,@c,1)+' - CHAR('+CONVERT(varchar(5),ASCII(SUBSTRING(@y,@c,1)))+')'
END

OUTPUT:

1 - 1 - CHAR(49)
2 - 2 - CHAR(50)
3 - 3 - CHAR(51)
4 - - CHAR(0)
5 - 4 - CHAR(52)
6 - 5 - CHAR(53)
7 - 6 - CHAR(54)

попробуйте этот unicode:

DECLARE @y nvarchar(10),@c int
set @y='123'+char(0)+'456'
set @c=0
WHILE @c<LEN(@y)
BEGIN
    SET @c=@c+1
    PRINT CONVERT(nvarchar(5),@c)+' - '+SUBSTRING(@y,@c,1)+' - UNICODE('+CONVERT(nvarchar(5),UNICODE(SUBSTRING(@y,@c,1)))+')'
END

, если у вас есть строки, которые полностью NULL:

declare @z varchar(10)
set @z=NULL
select @z AS IS_NULL, ISNULL(@Z,'') AS NULL_Removed

ВЫХОД:

IS_NULL    NULL_Removed
---------- ------------
NULL       

(1 row(s) affected)
2
ответ дан 8 December 2019 в 02:40
поделиться

Для латинских символов: select REPLACE('Ho'+CHAR(0)+'mer' COLLATE SQL_Latin1_General_CP1_CS_AS, CHAR(0), '')

Для русских символов: select REPLACE(('Го'+CHAR(0)+'мер') COLLATE Cyrillic_General_BIN , CHAR(0), '')

4
ответ дан 8 December 2019 в 02:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: