Vb.net 比较数据库字段中的值,并检查是否与VB中的变量相同
我想确保公司名称不会重复添加 所以我想检查一下所有的记录。通过从两个值中删除所有类型的特殊字符/空格,并对两个值进行比较 例如,输入=星际迷航有限公司 例如,数据库的值为star treck ltd 现在,我想删除所有添加到输入中的特殊字符,并从db字段中删除所有字符,以确保不再允许添加此公司名称Vb.net 比较数据库字段中的值,并检查是否与VB中的变量相同,vb.net,oracle11g,Vb.net,Oracle11g,我想确保公司名称不会重复添加 所以我想检查一下所有的记录。通过从两个值中删除所有类型的特殊字符/空格,并对两个值进行比较 例如,输入=星际迷航有限公司 例如,数据库的值为star treck ltd 现在,我想删除所有添加到输入中的特殊字符,并从db字段中删除所有字符,以确保不再允许添加此公司名称 ' the following is an input given by user to compare with the db records dim coname : coname
' the following is an input given by user to compare with the db records
dim coname : coname = gs("company name")
coname = replace(coname, "_", "")
coname = replace(coname, " ", "")
coname = replace(coname, "-", "")
coname = replace(coname, "(", "")
coname = replace(coname, ")", "")
coname = replace(coname, "?", "")
coname = replace(coname, "&", "")
coname = replace(coname, "^", "")
if Instr(coname, "'") > 0 then
coname = replace(coname, "'", "''")
end if
dim res
if coname<>"" then
res="SELECT COID FROM COMPANY WHERE (CONAME='"&coname&"') AND (CLOSEDFLD=0 OR CLOSEDFLD IS NULL)"
if LEFT(res,4)="ERR:" then
msg res
exit function
end if
end if
现在,我如何删除上述所有特殊字符/使两个字符中的所有字符(例如大写字母比较)用以下内容替换您的查询
res="SELECT COID FROM COMPANY WHERE regexp_replace(UPPER(CONAME),'_| |-|(|)|?|&|^','')='"&coname&"' AND (CLOSEDFLD=0 OR CLOSEDFLD IS NULL)"
例如,输入=Star Treck,LTD。例如,数据库的值为Star Treck LTD
您的输入有,而数据库有-和。因此,您要么需要从输入值和数据库值中删除非字母数字字符,要么执行某种模糊匹配
如果要从两个位置替换:
选择COID
从公司
其中TRIM regexpu替换UPPERCONAME,“[^[:alnum:][]+',”
=
TRIM REGEXP_REPLACE UPPER:coname,'[^[:alnum:]+',''
并且CLOSEDFLD=0或CLOSEDFLD为空
注意:您不应该使用字符串连接来创建查询,而应该使用绑定变量[]。SQL注入的时机已经成熟。如果coname输入为'or 1=1或'a'='a,则它将获取每一行。更糟糕的是,如果coname是“或存在”,请从secret_表中选择1,其中type='superuser'和password_hash='01234'或'a'='a,那么问题不仅仅限于这一个表。