#sql #db2-400
#sql #db2-400
Вопрос:
У меня есть таблица с одним столбцом (ID), значения в формате ‘123-456-7890’. Теперь мне нужно извлечь все строки из таблицы, значения идентификаторов которых имеют тот же формат. Я попытался запросить как
Select *
from file
where ID like ('%___-___-____%')
Но никаких записей найдено не было.
Пожалуйста, дайте мне знать, как это сделать.
Спасибо
Комментарии:
1. Если все значения имеют заданный формат, вам вообще не нужно
LIKE
. Это формат, аналогичный телефонному номеру в США (который вы не должны хранить отформатированным). Что произойдет, если вы попросите ввести только один из тире (т.е. Что-то похожее наLIKE '___-%'
)? Если это единственное, что есть в ваших данных, вам не нужен%
оператор.
Ответ №1:
Вам не нужны круглые скобки.
Попробуйте использовать
where ID like '___-___-____'
Комментарии:
1. Возможно, они ему и не нужны, но я совершенно уверен, что они не изменят его результатов. Меня больше интересует тот факт, что вы убрали
%
оператора.2. Я согласен. Когда я писал ответ, я не думаю, что я уже отформатировал его код.
Ответ №2:
Вы проверили тип данных поля?
У вас может быть числовое поле, отображаемое с шаблоном редакции, и хотя ваше фактическое значение поля равно 1234567890, вы видите его в формате 123-456-7890.
Для char / varchar ваше предложение должно работать, для числового значения не подойдет.
Итак, ваш тип поля char, varchar, числовой, десятичный …?
Пожалуйста, оставьте свои комментарии.
Комментарии:
1. Так называемый «шаблон редакции», вероятно, будет называться словом редактирования [он же EdtWrd; возможно, также может использоваться маска редактирования или EdtMsk], который описывает форматирование числовых значений. Этот ответ , скорее всего, кажется подходящим; т. Е. Пользователь видел эффект неявного преобразования числа в символ, так что сравнение символов предикат не был диагностирован как ошибка.