2012-02-15 7 views
3

のクエリをSELECT COUNT(1)(このユースケースの場合)ですべて変更したいと思います。MySQLプロキシクエリーリライト

私は次の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 

何をしているのですか?

答えて

1

あなたは文字列を検索する場合は、「COUNT(*)」)(あなたは

は、正規表現の魔法の文字^ $を禁止使用して文字列をエスケープすることができ、2番目のパラメータはパターンではなく、単純な文字列であることを覚えています%[] * + - 。?)

プレフィックスすべての非英数字(%w)を%%は%エスケープであり、%1は元の文字

function strPlainText(strText) 
    return strText:gsub("(%W)","%%%1") 
end 
ある%エスケープ文字と

だから

if string.match(string.upper(query), strPlainText('COUNT(*)')) then 
+0

申し訳ありませんが、私のためには機能しませんでした。しかし、これは:string.lower(query)== 'mysql.userからcount(*)を選択すると、 – Jonathan

+0

それは私の元のユースケース – Jonathan