Сервер SQL - удаление символа конца строки «\ 0» из данных

у меня есть столбец в базе данных (SQL Server 2005), в котором есть данные с "\ 0" в конце. При запросе в SQL Server этот символ не отображается и, кажется, не существует. Когда я смотрю в своем коде C #, персонаж там. Этот символ вызывает ошибку на нашем веб-сайте, и нам нужно удалить ее из всех затронутых строк.

Можно ли написать SQL-запрос, чтобы легко удалить этот символ из всех затронутых записей? Я могу получить все затронутые записи, но у меня нет способа обновить запись до нового значения (без "\ 0").

ОБНОВЛЕНИЕ: Когда я смотрю в своем коде C #, персонаж там. Этот символ вызывает ошибку на нашем веб-сайте, и нам нужно удалить ее из всех затронутых строк.

Можно ли написать SQL-запрос, чтобы легко удалить этот символ из всех затронутых записей? Я могу получить все затронутые записи, но у меня нет способа обновить запись до нового значения (без "\ 0").

ОБНОВЛЕНИЕ: Когда я смотрю в своем коде C #, персонаж там. Этот символ вызывает ошибку на нашем веб-сайте, и нам нужно удалить ее из всех затронутых строк.

Можно ли написать SQL-запрос, чтобы легко удалить этот символ из всех затронутых записей? Я могу получить все затронутые записи, но у меня нет способа обновить запись до нового значения (без "\ 0").

ОБНОВЛЕНИЕ: Кажется, это работает:

Select * from TABLE
where UNICODE(SUBSTRING(naughtyField, LEN(naughtyField), 1)) = 0

Итак:

Update TABLE
SET naughtyField = SUBSTRING(naughtyField, 1, LEN(naughtyField) - 1)
where UNICODE(SUBSTRING(naughtyField, LEN(naughtyField), 1)) = 0
7
задан Martin 20 August 2010 в 17:48
поделиться

2 ответа

Работает ли ...

UPDATE mytable
SET myfield = REPLACE(myfield, CHAR(0), '')

...?

SUBSTRING (naughtyfield, 1, LEN (naughtyfield) - 1) в тех полях, которые завершаются нулевым символом в конце, работает - но будьте осторожны, чтобы не использовать его для строк, не завершающихся NULL, иначе вы потеряете данные.

4
ответ дан 6 December 2019 в 12:45
поделиться

ОБНОВЛЕНИЕ tbl SET col = REPLACE (col, char (0), '')

Изменить: просто чтобы выкупить этот ответ! Может быть полезно для более общего случая, когда в строку встроены \ 0 s.

CREATE FUNCTION dbo.RemoveNullChars 
(
    @string NVARCHAR(MAX)
)
RETURNS NVARCHAR(MAX) WITH RETURNS NULL ON NULL INPUT
AS
BEGIN
DECLARE @Result NVARCHAR(MAX)
SET @Result = ''

DECLARE @counter INT

SET @counter = 0

WHILE (@counter <= LEN(@string))
    BEGIN
     IF UNICODE(SUBSTRING(@string,@counter,1)) <>  0 
        SET @Result = @Result + SUBSTRING(@string,@counter,1)
    SET @counter = @counter + 1    
    END
RETURN @Result
END

Затем

 UPDATE tbl SET col = dbo.RemoveNullChars (col)
10
ответ дан 6 December 2019 в 12:45
поделиться
Другие вопросы по тегам:

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