2015-10-31 6 views
-1

У меня есть сценарий, в котором я хочу запустить запрос, выбрав значение из раскрывающегося списка, состоящего из = и LIKE.Использование случая с операторами (=, LIKE)

Вот HTML: -

<td valign="left" width="20%"> 
        <asp:DropDownList ID="ddlmathsign" runat="server" Style="width: 30%; background-repeat: no-repeat; 
         background-position: bottom right; border: solid 1px #ACACAC; font-family: Tahoma,Arial,Helvetica,Geneva,sans-serif"> 
         <asp:ListItem Value="Equal">=</asp:ListItem> 
         <asp:ListItem Value="LIKE">LIKE</asp:ListItem> 
        </asp:DropDownList> 
       </td> 

я хочу запрос для Current_Item_Batch на основе пользователя операторов выбирает из списка.

select * from WMS_BIN_STATUS_TRACK where location_name='A1132' or Current_Item_code='4059010' or (CASE WHEN Current_Item_Batch = 'what query should come here ???' 

Я попытался с case с ниже запроса, но он не работал для меня

"select * from WMS_BIN_STATUS_TRACK where " + 
        "location_name='" + ddlBin.SelectedValue + "' or Current_Item_code='" + ddlItem.SelectedValue + "' or "+ 
        "(CASE WHEN Current_Item_Batch = " + ddlmathsign.SelectedValue + " then Current_Item_Batch='" + txtBatch.Text + "'"; 

Пожалуйста, предложите что происходит не так здесь

Я использую SQL сервер 2005

+0

Прежде всего, самое страшное, что в 2015 году ваш код sql можно было бы легко вводить. – AgentFire

+0

Кроме того, «did not work» - плохое объяснение того, что здесь не так. – AgentFire

+0

@AgentFire: Я получаю ошибку как 'Msg 102, Level 15, State 1, Line 2 Неправильный синтаксис около '='.' – BNN

ответ

1

Я не перед компьютером, но вот идея. Это просто псевдо-код, конечно, но вы увидите, как построить оператор вместо выражения случая:

or (@selecteditem = 'equal' and Current_Item_Batch = 'txtBatch.Text') 
or (@selecteditem = 'like' and Current_Item_Batch like '%txtBatch.Text%') 

Или вы можете создать SQL заявление на лету:

..."' or Current_Item_Batch " + 
     ddl.selectedvalue == "equal" ? (" = '" + txtBatch.Text + "'") : 
            (" like '%" + txtBatch.Text + "%'") 

Когда дело с такими издержками высказываний всегда думают об угрозе инъекций.

+0

Я попробовал '" выбрать * из WMS_BIN_STATUS_TRACK где "+ "location_name = '" + ddlBin.SelectedValue + "или Current_Item_code ='" + ddlItem.SelectedValue + "'или" + "" + ddlmathsign.SelectedValue + "=' Equal 'и Current_Item_Batch ='" + txtBatch.Text + "'" + "'" + ddlmathsign.SelectedValue + "= 'LIKE' и Current_Item_Batch LIKE '%" + txtBatch.Text + "%'" ;, но я запускаю неправильный синтаксис – BNN

+0

См. Ответ editd. –

+0

Я пытаюсь 1-го. вы можете помочь мне с динамическим кодом. Он г дает синтаксическую ошибку, пожалуйста ' "выберите * из WMS_BIN_STATUS_TRACK где" + "LOCATION_NAME = '" + ddlBin.SelectedValue + "или Current_Item_code ='" + ddlItem.SelectedValue + "или "" + ddlmathsign.SelectedValue + "'=' Equal 'и Current_Item_Batch ='" + txtBatch.Text + "'или'" + ddlmathsign.SelectedValue + "и Current_Item_Batch = '%" + txtBatch.Text + "%'"; ' – BNN

Смежные вопросы