MySQL RegExp错误地将重音字符与utf8字符集和二进制排序规则匹配

时间:2015-07-30 17:06:27

标签: mysql regex utf-8 base64

我有一个表格,它对文本字段使用utf8字符集和utf8二进制排序规则 我希望表中的所有行都是base64编码的 所以我的问题是:

private final ExecutorService persistor = Executors.newSingleThreadExecutor();
public void store( final SomeObject o ){
    persistor.submit( new Runnable(){
            @Override public void run(){
                // your persist-code here.
            }
        } );
}

但是此查询匹配字段具有二进制值的行,如select * from test where field REGEXP '^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$' ; 我的表的问题是我在文本字段中存储二进制字符串,我想对所有这些字符串进行base64编码 base64编码匹配的正则表达式取自此问题RegEx to parse or validate Base64 data
我认为它也匹配重音字符。但我认为regexp处理字节字符串。

1 个答案:

答案 0 :(得分:0)

尝试

field REGEXP '...' COLLATE utf8_bin

如果某个字段中有,则该字段中的“文字”可能无法恢复。