у меня есть столбец в базе данных (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
Работает ли ...
UPDATE mytable
SET myfield = REPLACE(myfield, CHAR(0), '')
...?
SUBSTRING (naughtyfield, 1, LEN (naughtyfield) - 1)
в тех полях, которые завершаются нулевым символом в конце, работает - но будьте осторожны, чтобы не использовать его для строк, не завершающихся NULL, иначе вы потеряете данные.
ОБНОВЛЕНИЕ 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)