有没有办法在 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 )使用 0x
,x''
hoặc 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字节序列。
Tôi là một lập trình viên xuất sắc, rất giỏi!