Как использовать REPLACE со строкой, содержащей апостроф?


person Community    schedule 19.12.2012    source источник
comment
Кто-то из SQL Chat только что помог мне. Мне нужно было перевести свое поле в VARCHAR. Не понравилось, что это текстовое поле.   -  person    schedule 19.12.2012
comment
Вы передаете эти строки из кода (например, c Sharp) или запускаете это в студии управления сервером sql?   -  person Kaf    schedule 19.12.2012
comment
вы можете заключить выражение в двойные кавычки, чтобы избежать одинарной кавычки   -  person Matanya    schedule 19.12.2012


Ответы (3)


Ошибка говорит вам точно, в чем проблема. FieldName — это столбец типа text, который не работает с функцией REPLACE. Попробуйте сначала указать первый параметр как VARCHAR(MAX), и он должен работать. IE:

UPDATE TableName
SET FieldName = REPLACE(CAST(FieldName AS VARCHAR(MAX)), 'SearchFor', 'ReplaceWith');
person SPFiredrake    schedule 19.12.2012

Это весело. Я просто столкнулся с этой точной вещью несколько минут назад. Оказывается, мне пришлось изменить это:

UPDATE TableName SET FieldName = REPLACE (FieldName, 'SearchFor', 'ReplaceWith');

к этому: UPDATE TableName SET FieldName = REPLACE (cast (FieldName as varchar (5000)), 'SearchFor', 'ReplaceWith');

person sjramsay    schedule 19.12.2012

Вы должны экранировать одинарную кавычку косой чертой.

UPDATE TableName
SET FieldName = REPLACE(FieldName, 'Isn\'t', 'Is not');
person Blaise Swanwick    schedule 19.12.2012
comment
В MSSQL вы избегаете апострофа, удваивая его. Другими словами: REPLACE(FieldName, 'Isn''t', 'Is not') - person SPFiredrake; 19.12.2012
comment
@SPFiredrake, мой плохой, я почему-то думал, что этот вопрос помечен как MySQL - person Blaise Swanwick; 20.12.2012