比较数据库字段中的值,并检查是否与VB中的变量相同



我想确保添加的公司名称不会重复所以我想检查一下所有的记录。通过从两个值中删除所有类型的特殊字符/空格,并对两者进行比较。

输入例如="0";Star Treck,LTD";数据库例如具有值"0";star-treck有限公司;

现在我想删除所有添加到输入中的特殊字符,并从db字段中删除所有字符,这样我就可以确保这个公司名称不会被再次添加

' 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";数据库例如具有值"0";star-treck有限公司;

您的输入具有,,而数据库具有-.,因此您需要从输入和数据库值中删除非字母数字字符,或者执行某种模糊匹配。

如果你想从两者中更换:

SELECT COID
FROM   COMPANY
WHERE  TRIM( REGEXP_REPLACE( UPPER(CONAME), '[^[:alnum:]]+', ' ' ) )
=
TRIM( REGEXP_REPLACE( UPPER(:coname), '[^[:alnum:]]+', ' ' ) )
AND ( CLOSEDFLD=0 OR CLOSEDFLD IS NULL )

(注意:您不应该使用字符串串联来创建查询,而应该使用绑定变量[示例]。(

最新更新