3

我想用(对于这个用例)更改所有SELECT COUNT(*)查询。SELECT COUNT(1)

我有以下 lua 脚本,但它不能以某种方式工作:

function read_query( packet )
   if string.byte(packet) == proxy.COM_QUERY then
     local query = string.sub(packet, 2)
     local replacing = false
     if string.match(string.upper(query), 'COUNT(*)') then
         query = string.gsub(query,'COUNT(*)', 'COUNT(1)')
         replacing = true
     end
     if (replacing) then
         proxy.queries:append(1, string.char(proxy.COM_QUERY) .. query )
         return proxy.PROXY_SEND_QUERY
     end
   end
 end

我究竟做错了什么?

4

1 回答 1

1

如果您正在搜索字符串“COUNT(*)”,请记住第二个参数是模式而不是简单字符串,您可以使用转义字符串

禁止正则表达式魔术字符^$()%.[]*+-?)

在每个非字母数字字符 (%W) 前加上 % 转义字符,其中 %% 是 % 转义字符,%1 是原始字符

function strPlainText(strText)
    return strText:gsub("(%W)","%%%1")
end

所以

if string.match(string.upper(query), strPlainText('COUNT(*)')) then
于 2012-02-16T14:14:47.237 回答