以下代码传递此行。最后一列名为toscode
。我正在尝试清除名称中toscolumn
包含“W1”的行。没有列被设置为索引。不起作用。
我读到$
前面的W1
(转义)是为了防止SQL注入。不确定%
做了什么,但它可能与索引有关,这可能是它无效的原因。
| SPX | 0 | 8.3 | 8.7 | 2017-03-24 | 0 | 30 | PUT | 2400 | SPXW170324C02400000 | .SPXW1703242400 |
MySqlCommand cmd = conn.CreateCommand();
cmd.Parameters.AddWithValue("@symbol", symbol);
cmd.CommandText = @"select *
from contractdetails
where symbol = @symbol
&& toscode NOT LIKE '%$W1%'
&& Type = 'PUT'
&& oBid > .09
&& not ITM
&& Days > 10
&& Days < 120
order by Days asc";
答案 0 :(得分:2)
你的LIKE
条款应为:
toscode NOT LIKE '%W1%'
删除'$'-it不属于LIKE
子句中的任何含义。如果它是用户提供的输入,您只需要担心SQL注入,在您的示例中并非如此。
'%'字符是通配符,因此搜索中的任何内容都可能位于“W1”之前或之后