我想确保添加的公司名称不会重复所以我想检查一下所有的记录。通过从两个值中删除所有类型的特殊字符/空格,并对两者进行比较。
输入例如="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 )
(注意:您不应该使用字符串串联来创建查询,而应该使用绑定变量[示例]。(