2013-06-14 4 views
-1

У меня есть следующий код, который я хочу сравнить с двумя строками (varchars).SQL как ошибка команды в Oracle

Если item.item_name содержит строку equipment_type в любом месте, я хочу, чтобы она вернула запись.

Но я получил ошибку, указав INVALID NUMBER в верхней ('%' + equipment_type + '%') команде.

select * from equipment_type 
join item on upper(item.item_name) like upper('%' + equipment_type + '%') 

Я понимаю, что проблема заключается в добавлении подстановочных строк к переменной equipment_type. Кто-нибудь знает, как заставить это сопоставление с шаблонами работать?

+1

Oracle использует '+' только для числовой и математической даты. Для конкатенации строк используйте двойные столбцы ('||'): '... как верхний ('%' || equipment_type || '%')'. –

+0

@EdGibbs благодарит помощника, это было прекрасно. –

+0

@EdGibbs - Вы должны сказать это как ответ. –

ответ

2

Примечание: Я изначально ответил на это в комментариях. С тех пор было высказано предположение, что я размещаю решение здесь как «реальный» ответ. Вот так ...

Oracle использует + для числовой и математической даты. Для конкатенации строк используйте двойные бары (||):

select * from equipment_type 
join item on upper(item.item_name) like upper('%' || equipment_type || '%') 

         The only changes are here ^^ ... and here ^^