mysql - 我用SQL语句 更新 行的时候,发现全部 中文都被清空了,请问怎么解决?
阿神
阿神 2017-04-17 14:43:02
0
2
679
UPDATE shop SET desn2 = "" WHERE desn2 REGEXP "[(联通)(移动)(电信)]";

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

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

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

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

阿神
阿神

闭关修行中......

全員に返信(2)
伊谢尔伦

これは単なる私の理解です。それが正しいかどうかについては保証はありません。
これは、mysql 通常の「[]」の説明です。

[ ] は任意の 1 文字に一致します。

[123] 1、2、または 3 に一致することを意味する一連の文字を定義します。

つまり、保存する文字は ASCII コードであると理解できます。これにより、文字セットの概念がある理由が理解しやすくなります。

SELECT ASCII('こんにちは'),ASCII('存在しません')
==>
データの結果は次のとおりです: 229 228

その理由は簡単に理解できます。select 229 REGEXP '[228]'==>1

いいねを押す +0
巴扎黑

select * from shop WHERE desn2 REGEXP "[(China Unicom)(Mobile)(Telecom)]";

実行して、どのデータが出力と一致するかを確認します。
結果を分析できるように、結果を送信することをお勧めします。

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート