Пользователь хочет выбрать все ордера, которые начинаются с определенного идентификатора, например:
123 вернет 123, 12345, 1238790 и т. Д. Однако ID является столбцом типа int.
Похоже, что (каламбур) у вас может быть несколько проблем с вашим дизайном.
Во-первых, хотя имя элемента данных "номер заказа" может предлагать цифры, номера заказов и т. П.обычно не числовые (например, текст с фиксированной шириной).Например, Международный стандартный номер книги (ISBN) не является числовым, не в последнюю очередь потому, что последний символ может быть X
.Даже если все допустимые символы являются цифрами, это не обязательно означает, что значения являются числовыми.
Хороший вопрос, который нужно задать себе: есть ли смысл применять математические операции к этим значениям?Например, дает ли вычисление суммы номеров заказов клиента значимый результат?Если ответ «нет», то значения, вероятно, не являются числовыми.Кроме того, учитывая требование использовать оператор, такой как LIKE
, для значений является убедительным признаком того, что они действительно не являются числовыми.
Во-вторых, между значением ID = '123'
илюбой ID
, начинающийся с тех же символов.Чтобы вернуться к примеру ISBN, вы можете определить, были ли две разные книги опубликованы одним и тем же издателем (при условии знания кодов издателя), разбив ISBN на составные группы.Если значения вашего идентификатора имеют схожие группировки, и вам нужно выполнить запрос к этим группам, вам может оказаться проще хранить подэлемент 123
отдельно от остальной части идентификатора и объединять части только для отображения.