Подтвердить что ты не робот

SQL для запроса текста при доступе с апострофом в нем

Пожалуйста, помогите мне в этом, потому что я не могу понять это правильно.

Я пытаюсь запросить имя (Daniel O'Neal) в именах столбцов tblStudents в базе данных доступа, однако доступ сообщает синтаксическую ошибку с выражением:

Select * from tblStudents where name like 'Daniel O'Neal'

из-за апострофа в имени.

Как я могу это преодолеть.

Заранее благодарю

4b9b3361

Ответ 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)

Заранее спасибо.