【发布时间】:2022-08-20 05:03:25
【问题描述】:
我需要构建一个 SQL 准备应用程序,它应该替换脚本中的参数。
每个参数都应该完全匹配,但忽略大小写。
我试图实现的是,将要替换的参数的名称以冒号字符开头,但我的正则表达式不匹配。
我在用着:
\'\\b\' + _Parameter + \'\\b\';
_Parameter 变量的实际值为\':value\',不带引号。
我该如何解决?
-
使用查询参数而不是替换文本要安全得多……有什么你不想这样做的原因吗?例如,在 FireDac 中,您可以将查询或命令参数设置为 TFParam 对象,并按名称或位置查找它们。使用参数您不必担心您插入到查询中的文本是有效的 SQL,它还可以防止 SQL 注入攻击。
-
嗨,罗布。谢谢你的回复。是的,我知道这一点。我不使用声明的字段,并且脚本在运行时放在一起。只是更喜欢这样做,特别是对于这个应用程序。安全不是问题。
-
使用工具(在线或本地)调试您的正则表达式。从第一个字符串文字中删除
\\:,因为它位于错误的位置(在单词结尾之前)并且分号已经在变量值中。 -
嗨,布莱恩:/bText/b 绕过冒号。我已经测试过了。但我必须放弃 /: 因为它什么也没做。问题是如何以将文本与前导冒号匹配的方式构建表达式
-
没有提示?我搜索了这个超过 4 小时。不公平的投票。
标签: delphi pascal freepascal