Не удается отфильтровать Oracle SELECT в ASPX

Часть источника данных ASP.Net 2:

  SelectCommand="SELECT BU.P_GEAC_CORP_CD AS Corp_Code,
                        BU.Business_unit  as Abbreviation,
                        CC.DEPTID         AS Cost_Center,
                        CC.DESCR          AS Description
                 FROM fstst.PS_P_CATR_BUDPT_VW CC,
                      fstst.ps_p_bus_unit_cnv  BU 
                 WHERE BU.Business_unit = CC.Business_unit">

Это кормит GridView, который работает. Дисплей показывает, что

CC.DESCR          AS Description

это текст (не числовой).

Я хочу использовать текстовое поле в качестве фильтра "содержит", т. Е. Если я добавлю "Восстановление" в поле, я хочу добавить источник данных

AND CC.DESCR Like '%Recovery%'

на SQL. Если я жестко закодирую эту строку, это сработает.

Но если я добавлю

 <SelectParameters>
    <asp:ControlParameter ControlID="Dept_Name"
                          Name="DName"
                          PropertyName="Text"
                          Type="string" />
 </SelectParameters>

без изменения SQL я не получаю возвращаемых строк. Тогда если я поставлю

AND CC.DESCR Like '%' + :DName + '%'

в SQL я не получаю результатов, когда текстовое поле пустое, и ORA-01722: недопустимое число, как только я ввожу в него символы.

2 ответа

Спасибо за попытку "птичьих губ".

К сожалению, на сервере Oracle было включено только минимальное ведение журнала.

Вдобавок ко всему, когда я посещал DBA, stackru каким-то образом оказался в списке запрещенных сайтов нашей компании. Поэтому я не мог поделиться ответом.

Это должно быть малоизвестным фактом об Oracle, поскольку наши два администратора баз данных тоже его не уловили: Oracle считает, что плюсы - это числа, независимо от контекста.

Это сработало, как только я сменил + на ||

Вам нужно использовать одинарные кавычки вокруг текста при использовании оператора like со строкой.

Это должно выглядеть

AND CC_DESCR LIKE '%VALUE%'
Другие вопросы по тегам