2016-12-06 2 views
0

В моей базе данных у меня была проблема с тем, как я избежал одинарных кавычек, в результате чего они удваиваются каждый раз, когда сохраняется запись. Я исправил это сейчас, но мне нужно очистить беспорядок, который он создал.SQL Server - заменить несколько апострофов одним апострофом

Так что мне было интересно, что самое прямое, чтобы заменить все экземпляры больше, чем на апостроф с помощью одного. Так, например, замените '' '' '' 'на'

В таблице представлено множество примеров их различного количества.

+0

Вы можете показать некоторые данные образца и ожидаемый результат? –

ответ

3

Попробуйте этот трюк ниже

UPDATE yourTable 
SET columnName = REPLACE(REPLACE(REPLACE(columnName,'''','<>'),'><',''),'<>','''') 

Этот трюк пригодится для замены нескольких последовательных экземпляров любого персонажа с соответствующим одним экземпляром. Я нашел это на SO для замены нескольких экземпляров пробелов пробелом.

+0

Очень опасно. По крайней мере, используйте контрольный символ в качестве замены. –

+0

Замечательно, хорошо работает для меня спасибо. – Brian

1

Это включает в себя множество одинарных кавычек:

update t 
    set col = replace(col, '''''', ''''); 
-----------------------------^^** ^^ 

Первая строка одинарных кавычек имеет шесть одинарных кавычек, то вторые имеет четыре.

^^ и ** показаны удвоенные одинарные кавычки, которые представляют собой одиночную кавычку.

+0

Спасибо, но это будет работать только для определенного количества котировок? Я хочу решение, которое заменит все экземпляры. Так, например, как «', так и' '' '' '' 'будут заменены одной цитатой. – Brian

+0

Я думаю, что это заменит любое количество случаев, в которых есть 2 сингл-кавычки. Функция замены находит первые 2, заменяет их одним, чем находит следующие 2 и так далее ... – GuidoG

+0

@Brian. , , Думаю, когда я столкнулся с этой проблемой с одинарными кавычками, это было всего два подряд. Решение mhasan работает для любого числа. –

Смежные вопросы