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

 米米丫头2502860283 发布于 2022-11-01 07:54
UPDATE shop SET desn2 = "" WHERE desn2 REGEXP "[(联通)(移动)(电信)]";

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

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

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

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

2 个回答
  • select * from shop WHERE desn2 REGEXP "[(联通)(移动)(电信)]";

    执行一下,看看输出匹配的都是什么数据
    最好把 结果发出来,这样才能分析啊

    2022-11-01 21:26 回答
  • 这只是我的理解。至于正确与否不做保证。
    这是mysql正则的"[]"说明:

    [ ] 匹配任何单一字符。

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

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

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

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

    2022-11-01 21:29 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有