gpt4 book ai didi

MySQL 检查 BLOB 是否为有效的 UTF-8

转载 作者:行者123 更新时间:2023-11-29 03:26:32 24 4
gpt4 key购买 nike

我在 MySQL 数据库的 BLOB 列中有数据,我怀疑这些数据完全是 UTF-8 编码的文本(因此最好存储为 TEXT),但我想对此进行测试。

有没有一种方法可以检查二进制字符串在 SQL 中是否为有效的 UTF-8?所以我可以做类似的事情:

SELECT SUM(IS_UTF8(col)) / SUM(1) as `percentUtf8`
FROM table

最佳答案

对你来说“高效”?还是为了电脑? mb_check_encoding 在一次读取数据中完成它——对计算机高效。但是您需要编写代码来识别所有 blob,并进行选择等——对您来说效率较低。

好吧,下面是生成乏味部分的方法:

> mysql ... information_schema > sql.inc
SELECT CONCAT('Foo("', table_schema, '", "', table_name, '",
"', column_name, '");'
)
FROM tables
JOIN columns USING (table_schema, table_name)
WHERE column_type LIKE '%BLOB'
OR column_type LIKE '%BINARY%';
exit;

对我来说,sql.inc 包含类似的东西

Foo("test", "07", "md5");
Foo("test", "jpg", "jpg");
Foo("test", "key2", "stuff");
Foo("test", "picsav", "thumb");
Foo("try", "bin16", "bin16");
Foo("try", "bin16", "bin32");
Foo("try", "blobs", "b");
Foo("try", "f521951", "blob_c");

然后编写 PHP function Foo(db, tbl, col) 子例程来进行测试并显示您喜欢的任何内容——或对结果采取行动。并且 require "sql.inc";

关于MySQL 检查 BLOB 是否为有效的 UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35353531/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com