mysql - 我用SQL语句 更新 行的时候,发现全部 中文都被清空了,请问怎么解决?

查看:133
本文介绍了mysql - 我用SQL语句 更新 行的时候,发现全部 中文都被清空了,请问怎么解决?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

UPDATE shop SET desn2 = "" WHERE desn2 REGEXP "[(联通)(移动)(电信)]";

我用这句的时候,发现中文都被清空了,而一些只有数字或者英语组成的单元格却没有被清空,请问怎么办?

我试了试,只要使用了中括号,就会莫名其妙被匹配:
我觉得应该是他把中文,分解成了 编码 ,然后用编码去匹配的
你自己写个试试.

SELECT '大家好' REGEXP '[不存在]';

这个应该不存在,但是她就是存在了!

解决方案

这只是我的理解。至于正确与否不做保证。
这是mysql正则的"[]"说明:

[ ] 匹配任何单一字符。

[123]定义一组字符,意思是匹配1或2或3.

那么,我理解的字符保存方式是ascii码保存的,这也好理解为什么会有字符集的概念。

SELECT ASCII('大家好'),ASCII('不存在')
==>
数据结果是:229 228

那这就好理解为什么:select 229 REGEXP '[228]'==>1

这篇关于mysql - 我用SQL语句 更新 行的时候,发现全部 中文都被清空了,请问怎么解决?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆