MySql найти, если поле enum содержит точное значение - PullRequest
0 голосов
/ 29 августа 2018

У меня есть хранимая процедура, которая проверяет совместимость модели и возвращает сообщение об успехе или ошибке. Например, процессор и материнская плата должны использовать один и тот же разъем. Возможные значения из всех записей:

    cpu           mb                      case                          mb
+-----+----+ +-----+---+ +-----------------+-------------------+ +-------+-----+
|cpu_socket| |mb_socket| | case_size                           | |   mb_size   |  
|   AM4    | |   AM4   | |uATX/MicroATX,ATX,ExtendedATX,MiniITX| |uATX/MicroATX|
|   1151   | |   1151  | |uATX/MicroATX,MiniITX                | |     ATX     |
+-----+----+ +----+----+ +-----------------+-------------------+ +-------+-----+

case_size и mb_size являются полями enum.

IF (cpu_socket=mb_socket) then .... или IF (cpu_socket LIKE mb_socket) then .... будет работать для проверки сокета.

Но как я могу проверить размер материнской платы и размер корпуса? Если я напишу:

IF (case_size = mb_size) then .... или IF (case_size LIKE '%mb_size%') then ....
Ни одна из них не работает, потому что, если материнская плата имеет значение «ATX», она будет возвращать случаи со значением «uATX / MicroATX, MiniITX», поскольку она содержит «uATX».

Как я могу проверить совместимость для этого поля?

...