КАК сопоставление шаблонов на AS400

#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], который описывает форматирование числовых значений. Этот ответ , скорее всего, кажется подходящим; т. Е. Пользователь видел эффект неявного преобразования числа в символ, так что сравнение символов предикат не был диагностирован как ошибка.