等于MS SQL中的(=)运算符
我正在使用Visual Studio 2003和VB.NET语言。我写我的问题就像等于MS SQL中的(=)运算符,sql,sql-server,vb.net,Sql,Sql Server,Vb.net,我正在使用Visual Studio 2003和VB.NET语言。我写我的问题就像 "UPDATE book SET status='confirm' WHERE idnum = '%" & daoi.Text & "%'" 但是数据没有更新。当我使用这个代码时 "UPDATE book SET status='confirm' WHERE idnum LIKE '%" & daoi.Text & "%'" 数据已更新 为什么不能在语句中使用等于?在SQL中,
"UPDATE book SET status='confirm' WHERE idnum = '%" & daoi.Text & "%'"
但是数据没有更新。当我使用这个代码时
"UPDATE book SET status='confirm' WHERE idnum LIKE '%" & daoi.Text & "%'"
数据已更新
为什么不能在语句中使用等于?在SQL中,
%
字符是通配符。当您不使用像这样的时,您不需要它,而是需要它
您的查询应该是“updatebook SET status='confirm'WHERE idnum=”&daoi.Text&“”
另外:您应该参数化您的查询 LIKE
和=
不一样,它们是两个不同的运算符
查找部分匹配的字符串-例如
'here is an example' LIKE '%exam%' -- TRUE
=
查找精确匹配-例如
'here is an example' = '%exam%' -- FALSE
'exam' = 'exam' -- TRUE
在equals语句中有%
符号。因此,它将只匹配ID中有%
符号的任何图书ID
%
是LIKE
语句中的通配符 您可以,假设daoi.Text
包含您要查找的确切值:
"UPDATE book SET status='confirm' WHERE idnum = '" & daoi.Text & "'"
但是请注意,这种查询构建是不安全的:如果用户(或犯罪者)键入5';放下桌上的书--代码>然后执行一个与您期望的完全不同的查询。这称为SQL注入。假设idnum列包含值“A0001”,
当您执行第一个查询“时,其中idnum='%'”&daoi.Text&“%'”
”,这将尝试与不正确的相等操作ie'a001'='%a001%'
匹配
当您应用第二个查询“WHERE idnum(如“%””&daoi.Text&“%”“
”)时,这将尝试使用部分匹配将列值与输入数据匹配。例如,'a001'如“%a001%”
,因此这将起作用
如果您想了解有关like运算符的更多信息,请参见下面的链接,该链接解释了如何使用like
运算符搜索指定的模式,而=
用于搜索中的精确比较。对正确的、写得很好的答案投了神秘的反对票……所以