2015-08-08 3 views
0

Итак, у меня есть следующая таблица:MySQL избежать специальных символов

ID product 
1 usb-stick 
2 blackberry 
3 cup of tea 
4 usb-stick 2.0 
5 computer 

И хотел добиться того, чтобы каждый раз, когда я смотрю через мои данные с LIKE состоянии, например:

SELECT * FROM products WHERE product LIKE '% <value> %' 

Я бы получить результат, который я искал. Но поскольку в моих колонках есть специальные символы, я должен записать фактическое значение, чтобы вернуть их обратно.

Итак, мой вопрос здесь, если есть какой-либо способ избежать специальных символов (которые хранятся внутри моих колонок, например: usb-stick), чтобы быть доступным для поиска, а также для следующего утверждения):

ID product   title/keyword (seperated by comma) product must be searchable for 
1 usb-stick  usb stick, usb  stick (notice the spaces) 
2 blackberry  blackberry, black berry 
3 cup of tea  cup of tee 
4 usb-stick 2.0 usb stick 2.0, usb stick 2, usb-stick 2, etc 
5 computer  computer 

Вкратце, я просто хочу, чтобы продукт мог быть доступен для других утверждений (так что не только фактическое значение/название).

Помощь была бы appericiated!

+0

вы можете использовать 'заменить()', если у вас есть всегда "" обугленного –

+0

@FabioCardoso Персонажи могут быть чем угодно. Например, оператор поиска клиента равен: usb-stick, который будет рассматриваться как продукт 1. В принципе, я просто хочу, чтобы специальные символы сортировались внутри значения, но единственная причина, по которой он существует, - это правильная информация всякий раз, когда информация загружен. – Bilal075

ответ

1

Вы можете использовать replace()

SELECT * FROM products WHERE replace(product , '-', '') LIKE '% <value> %' 

Редактировать это не дружит вообще, но может работать:

SELECT * FROM products WHERE 
REPLACE(
    REPLACE(
     REPLACE(
      REPLACE(
       REPLACE(
        REPLACE(
         REPLACE(
          REPLACE(
           REPLACE(
            REPLACE(
             REPLACE(
              REPLACE(
               REPLACE(
                REPLACE(
                 REPLACE(
                  REPLACE(
                   REPLACE(
                    REPLACE(
                     REPLACE(
                      REPLACE(
                       REPLACE(
                        REPLACE(
                         REPLACE(
                          REPLACE(
                           REPLACE(
                            REPLACE(
                   REPLACE(
                    REPLACE(
                     REPLACE(
                      REPLACE(
                       REPLACE(
                        REPLACE(
                         REPLACE(product, '\"', ''), 
                        '.', ''), 
                       '?', ''), 
                      '`', ''), 
                     '<', ''), 
                    '=', ''), 
                   '{', ''), 
                            '}', ''), 
                           '[', ''), 
                          ']', ''), 
                         '|', ''), 
                        '\'', ''), 
                       ':', ''), 
                      ';', ''), 
                     '~', ''), 
                    '!', ''), 
                   '@', ''), 
                  '#', ''), 
                 '$', ''), 
                '%', ''), 
               '^', ''), 
              '&', ''), 
             '*', ''), 
            '_', ''), 
           '+', ''), 
          ',', ''), 
         '/', ''), 
        '(', ''), 
       ')', ''), 
      '-', ''), 
     '>', ''), 
    ' ', '-'), 
'--', '-') like '% <value> %' 
+0

О, господин, я сейчас так глуп. Я действительно думал, что это обновит столбец, но нет возможности, так как вы выбираете строку. Большое вам спасибо. Как я могу это сделать для нескольких условий? – Bilal075

+0

Какие несколько условий вы хотите? –

+0

На самом деле, почти каждый специальный символ, <,> ./?:; "{} [] '! @ # $%^& *() _- + = \ | – Bilal075