Две вещи случаются, чтобы сделать эту работу. Сначала исходные приложения копируют данные в буфер обмена в нескольких форматах, если это возможно. Например, он может предоставлять HTML, RTF, DOC и текстовые форматы. Во-вторых, целевое приложение написано для возможности вставки из нескольких форматов, если это возможно. Например, он может сначала искать RTF, а если он недоступен, он может вставлять обычный текст, а если ни один из них не доступен, он вообще не может вставить.
Прошло много времени с тех пор, как я использовал функции буфера обмена, но если я правильно помню, приложение-источник может указать, какие форматы оно может предоставить, фактически не выполняя полного преобразования и передачи данных в буфер обмена. Фактическое преобразование выполняется только тогда, когда некоторые другие приложения фактически запрашивают данные из буфера обмена в определенном формате.
Если вы хотите полное соответствие слов, вам следует попробовать поиск по ПОЛНОТЕКСТУ. Одним из предварительных условий является то, что ваша таблица должна использовать механизм MyISAM:
CREATE TABLE test (
id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
headline VARCHAR(120) NOT NULL,
description VARCHAR(255) NOT NULL,
FULLTEXT(headline, description)
) ENGINE=MyISAM;
Вы должны запрашивать совпадения следующим образом:
SELECT *
FROM test
WHERE MATCH (headline,description) AGAINST('$string');
Это дает дополнительное преимущество упорядочивания результатов по релевантности.
Альтернатива для полнотекстовый поиск, которого может быть достаточно, заключается в использовании функции REGEXP.
Ваш пример запроса может быть таким:
SELECT *
FROM db
WHERE description REGEXP '[[:<:]]$string[[:>:]]' = 1
OR headline REGEXP '[[:<:]]$string[[:>:]]' = 1