MySQL Wildcard для значения поля? - PullRequest
1 голос
/ 24 июля 2011

Я пытаюсь создать простую систему для перевода некоторых значений, прежде чем они будут выведены в файл для пользователей.Допустим, у меня есть текст: «Метод (aaaabbbccc - случайный текст)», я пытаюсь позволить пользователю преобразовать его во что угодно.Я построил таблицу для преобразований, и в этой таблице пользователь вводит, скажем, «Method *» => «Description», что в основном означает, что он хотел бы, чтобы текст «Method», за которым следовало что-либо (* = подстановочный знак), был бы просто переведен.в «Описание» (или любой другой текст, который они хотели бы).

Если бы у меня была некоторая информация:

 Method (aaaabbbccc - random text)
 Method 2 (test - text)
 Method3

Это должно быть преобразовано в

Description
Description
Method3

Какпоследняя строка не удовлетворяет фильтрам, определенным пользователем, она не конвертируется.

Я думал, что самый простой способ добиться этого - выполнить запрос для каждой строки:

SELECT new_text FROM table WHERE old_text LIKE 'Method 2 (test - text)' etc.

Но так как old_text - это 'Method *', * необходимо преобразовать в подстановочный знак, и MySQL должен обрабатывать это при выполнении поиска.Кажется, что каждая комбинация, которую я пытаюсь (даже сохраняя old_text как «Method%»), не работает.

Надеясь, что кто-то может предоставить некоторые указатели для построения системы, подобной этой, где пользователи могут определить фильтр и затем работать с MySQL.эти фильтры.

Ответы [ 2 ]

0 голосов
/ 24 июля 2011

Я думаю, вам нужно что-то вроде этого:

SELECT CASE WHEN old_text LIKE REPLACE(user_entry, '*', '%')
            THEN new_text
            ELSE old_text
       END AS modified_text 
FROM table 

где:
old_text это 'Method (aaaabbbccc - random text)',
user_entry равно 'Method *' и
new_text является 'Description'

0 голосов
/ 24 июля 2011

Сделал это в mysql / (используя phpmyadmin).Это итоговый экран вывода (надеюсь, вы интерпретируете итальянский):

Запись Visualizzazione 0 - 1 (2 Totali, La query ha impiegato 0.0010 sec)

SELECT * FROM tabl WHERE txt LIKE'method%'

id txt

        1   Method 2 (test - text)

        2   method (aaaabbbccc - random text)

Хорошо, так?

...