mysql - MySQL 中的 Unicode(十六进制)字 rune 字

标签 mysql unicode literals unicode-literals

有没有办法在 MySQL 中指定 Unicode 字 rune 字?

我想用 Ascii 字符替换 Unicode 字符,如下所示:

Update MyTbl Set MyFld = Replace(MyFld, "ẏ", "y")

但我使用的是大多数字体中不可用的更晦涩的字符,所以我希望能够使用 Unicode 字 rune 字,例如

Update MyTbl Set MyFld = Replace(MyFld, "\u1e8f", "y")

此 SQL 语句是从 PHP 脚本调用的 - 第一种形式不仅不可读,而且实际上不起作用!

最佳答案

您可以指定 hexadecimal literals (甚至 binary literals )使用 0xx''X'':

select  0xC2A2;
select x'C2A2';
select X'C2A2';

请注意返回类型是二进制字符串,因此每个字节都被视为一个字符。您可以使用 char_length 验证这一点:

select char_length(0xC2A2)

2

如果你想要UTF-8字符串,您需要使用 convert :

select convert(0xC2A2 using utf8mb4)

我们可以看到 C2 A2 在 UTF-8 中被认为是 1 个字符:

select char_length(convert(0xC2A2 using utf8mb4))

1


此外,您不必担心无效字节,因为 convert 会自动删除它们:

select char_length(convert(0xC1A2 using utf8mb4))

0

可以看出,输出是0,因为C1 A2是一个无效的UTF-8字节序列。

关于mysql - MySQL 中的 Unicode(十六进制)字 rune 字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4256657/

相关文章:

带有通配符和文字的 mysql boolean 模式全文搜索

mysql - 从时间戳中选择最后连续的天数(今天除外)

python - 如何查看爬取的unicode阿拉伯字符串?

unicode - 将 "болно"转换为西里尔文

c++ - 为什么会导致错误?

C++11 operator""with double parameter

mysql - Mongo - MySql 之间喜欢

PHP/mySQL : mysql_query with SELECT, 来源和地点

php - 如何显示两个特定日期之间的数据,日期格式为时间戳

java - 如何将编码字符替换为字符串文字?像\uDXYZW 或者类似的东西?