SQL для запроса текста при доступе с апострофом в нем
Пожалуйста, помогите мне в этом, потому что я не могу понять это правильно.
Я пытаюсь запросить имя (Daniel O'Neal) в именах столбцов tblStudents в базе данных доступа, однако доступ сообщает синтаксическую ошибку с выражением:
Select * from tblStudents where name like 'Daniel O'Neal'
из-за апострофа в имени.
Как я могу это преодолеть.
Заранее благодарю
Ответы
Ответ 1
Вы избегаете '
, удваивая его, поэтому:
Select * from tblStudents where name like 'Daniel O''Neal'
Обратите внимание, что если вы принимаете "Daniel O'Neal" с пользовательского ввода, сломанная цитата является серьезной проблемой безопасности. Вы всегда должны дезинфицировать строку или использовать параметризованные запросы.
Ответ 2
Когда вы включаете строковый литерал в запрос, вы можете заключить строку в одинарные или двойные кавычки; Доступ к базе данных будет приниматься либо. Таким образом, двойные кавычки избегают проблемы со строкой, которая содержит одну цитату.
SELECT * FROM tblStudents WHERE [name] Like "Daniel O'Neal";
Если вы хотите сохранить одинарные кавычки вокруг своей строки, вы можете удвоить одну кавычку внутри нее, как указано в других ответах.
SELECT * FROM tblStudents WHERE [name] Like 'Daniel O''Neal';
Обратите внимание на квадратные скобки, окружающие имя. Я использовал скобки, чтобы уменьшить вероятность запутать механизм базы данных, потому что имя зарезервированное слово.
Непонятно, почему вы используете сравнение Like в своем запросе. Основываясь на том, что вы показали, это должно работать вместо этого.
SELECT * FROM tblStudents WHERE [name] = "Daniel O'Neal";
Ответ 3
Побегите апостроф в O'Neal
, написав O''Neal
(два апострофа).
Ответ 4
... лучше объявить имя как varible и спросить, если в строке есть апостроф:
например:.
Строка DIM YourName
YourName = "Daniel O'Neal"
If InStr(YourName, "'") Then
SELECT * FROM tblStudents WHERE [name] Like """ Your Name """ ;
else
SELECT * FROM tblStudents WHERE [name] Like '" Your Name "' ;
endif
Ответ 5
Как насчет более простого: выберите * из tblStudents, где [name] = replace (YourName, "'", "' '" )
Ответ 6
но что, если вы хотите искать только апостроф?
ОБНОВЛЕНИЕ продавец-продавец SET customfield2 = NULL ГДЕ customfield2 LIKE '%'% '
Я хочу, чтобы оператор update нашел все, что содержит один апостроф, содержащийся в customfield2.
эта колонка является varchar (50)
Заранее спасибо.