Как вы запрашиваете varchar2 для формата? Например, поле Varchar2 содержит дату в виде mm/dd/yyyy '01/01/2015 '. Как мне найти дату, которая была написана как yyyy/mm/dd '2015/01/01', поскольку я не знаю неверно отформатированную дату, поэтому я не могу ее обычным образом искать. Я просто хочу написать where FIELD_1 like '####/##/##'
, но это явно не работает.Поиск varchar2 для формата?
ответ
Конечно то, что вы хотите делать работы, если использовать регулярные выражения:
where regexp_like(field_1, '^[0-9]{4}/[0-9]{2}/[0-9]{2}$')
В качестве примечания: вы не должны хранить даты в базе данных в виде строк. Вместо этого вы должны использовать даты.
Ответ Гордона, вероятно, достаточно хорош для того, что вам нужно, но это может быть проблема, которую регулярное выражение, которое он дал вам, будет соответствовать вещам вроде 9999/99/99, которые не являются датами.
Если вам действительно нужно соответствовать датам - и если дата - это все значение VARCHAR2, а не только что-то встроенное в нее, то функция может помочь.
В приведенном ниже примере я создаю функцию с именем safe_to_date
, которая возвращает NULL, если данное значение VARCHAR2 не является датой в указанном формате.
CREATE OR REPLACE FUNCTION safe_to_date (p_string VARCHAR2) RETURN DATE IS
BEGIN
RETURN to_date(p_string,'YYYY/MM/DD');
EXCEPTION
WHEN others THEN
RETURN NULL;
END;
with my_table AS
(SELECT '9999/99/99' /*invalid*/ my_column FROM dual UNION ALL
SELECT '2015/12/25' from dual UNION ALL
SELECT 'not a date at all' /*invalid*/ FROM dual UNION ALL
SELECT '11-NOV-1917' from dual UNION ALL
SELECT '2015*DEC*25' from dual UNION ALL
SELECT '2015/02/28' from dual UNION ALL
SELECT '2015/02/29' /*invalid*/ from dual)
SELECT *
FROM my_table
WHERE safe_to_date(my_column) IS NOT NULL;
Ожидаемые результаты:
25-DEC-2015
11-NOV-1917
25-DEC-2015
28-FEB-2015
- 1. PLSQL Поиск с VARCHAR2
- 2. Поиск первой буквы в varchar2 Oracle sql
- 3. varchar2 для временной метки
- 4. NVARCHAR для VARCHAR2 вставки
- 5. Поиск формата столбца
- 6. Преобразование varchar2 на сегодняшний день
- 7. Varchar2 to date для сравнения sysdate
- 8. Поиск стандартного формата обмена данными
- 9. Для цикла с использованием VARCHAR2
- 10. Поиск формата JSON POST API
- 11. Поиск, если столбец varchar2 содержит любое 10-значное число
- 12. PL/SQL выбрать несколько varchar2 в один varchar2
- 13. Oracle varchar2 минимальная длина
- 14. Поиск формата документа .. плавный макет + управление страницей
- 15. PHP - Поиск строк из определенного формата
- 16. Поиск правильного формата комментариев PHP в Doxygen
- 17. Заявление ALTER: Почему VARCHAR2 (50 BYTE) вместо VARCHAR2 (50 CHAR)?
- 18. Выходного параметра для ТАБЛИЦЫ VARCHAR2 Oracle odp.net
- 19. PL/SQL Функция для возврата varchar2/numbers
- 20. Расширенная длина для varchar2 в Oracle 12c
- 21. поиск строки формата JSON в файле Java
- 22. формата LatLon для CloudSearch
- 23. Поиск другого формата дата в упругом поиске
- 24. Поиск формата, используемого в журнале Apache
- 25. Поиск в столбце для данных, у которого нет формата адреса
- 26. Сравнение VARCHAR2 с SYSDATE
- 27. Проанализируйте значение varchar2 Column
- 28. Преобразование Boolean в Varchar2
- 29. Datetime to Varchar2 conversion
- 30. OracleCommand Параметр varchar2 paradoxon ;-)
Поверьте мне, я знаю лучше, а не мой DB. Это на самом деле поставщик данных ... Это сумасшедший мир! –