Я пишу код, который генерирует SQL-запросы на основе строковых параметров. При построении запроса я проверяю, является ли сравниваемое значение в WHERE-части инструкции словом или числом, и на основе этого я добавляю апострофы.В Oracle SQL, каковы ключевые слова, которые представляют числовое значение?
Проблема в том, что есть несколько ключевых слов, которые представляют числовое значение, например sysdate, поэтому я хотел бы сравнить входное слово со списком ключевых слов, которые представляют числовое значение.
Я выполнил команду:
select * from V$RESERVED_WORDS
, но было дано более 1000 ключевых слов, и многие из них не имеют значения (например, SELECT). Есть ли способ получить список только ключевых слов с числовым значением?
'sysdate' не представляет собой« числовое »значение, оно представляет собой« DATE » –
. Я бы настоятельно советовал против такого подхода. Это вызовет проблемы без конца в будущем - например, есть «5» числовое значение? Что касается «5.4», «.4» (американский стиль без ведущего 0), «4,3» (немецкий десятичный разделитель), «0.7E-17» (научная нотация), «20150319» (либо число, либо сегодняшняя дата), ...? –
Вместо того, чтобы смотреть на тип данных, переданных в значение для WHERE, посмотрите на тип данных используемого столбца (вы можете запросить его из 'user_tab_columns') ...' DATE' и 'TIMESTAMP' будут всегда нужно относиться по-разному, конечно, а не просто котировать или нет. – Captain