主题: 在utf8字符集下,获取汉字拼音(mysql)
第一步:建立拼音对应表
DROP TABLE IF EXISTS `pyk`;
CREATE TABLE `pyk` (
`PY` varchar(1) ,
`HZ1` int ,
`HZ2` int
) ;
INSERT INTO `pyk` (`PY`,`HZ1`,`HZ2`) VALUES
('A',-20319,-20284),
('B',-20283,-19776),
('C',-19775,-19219),
('D',-19218,-18711),
('E',-18710,-18527),
('F',-18526,-18240),
('G',-18239,-17923),
('H',-17922,-17418),
('J',-17417,-16475),
('K',-16474,-16213),
('L',-16212,-15641),
('M',-15640,-15166),
('N',-15165,-14923),
('O',-14922,-14915),
('P',-14914,-14631),
('Q',-14630,-14150),
('R',-14149,-14091),
('S',-14090,-13319),
('T',-13318,-12839),
('W',-12838,-12557),
('X',-12556,-11848),
('Y',-11847,-11056),
('Z',-11055,-10247);
第二步:建立函数
DROP FUNCTION IF EXISTS `hzcode`;
CREATE FUNCTION `hzcode` (s CHAR(255)) RETURNS char
BEGIN
DECLARE hz_code int;
DECLARE hz_py char;
declare str varchar(400);
SET hz_code = ord(convert(substring(s,1,1) using gbk))-65536 ;
select py into hz_py from pyk where hz_code>=pyk.hz1 and hz_code<=pyk.hz2;
RETURN hz_py;
END;
特别注意SET hz_code = ord(convert(substring(s,1,1) using gbk))-65536 ;这句一定要convert函数,网上很多都没有这个函数
结果是在别的字符集下的数据库没有办法得到正确的结果.
测试一下
Select hz_code(‘曾’)
第三步:建立可以处理字符串的函数
drop function if exists hzcode_str;
create function hzcode_str(s varchar(30)) returns varchar(30)
begin
declare m_len int;
declare i int;
declare m_return varchar(50);
set i=1;
set m_len=char_length(s);
set m_return="";
while i<=m_len do
#set m_return=hzcode(s);
if hzcode(mid(s,i,1)) is not null then
set m_return = concat(m_return,hzcode(mid(s,i,1)));
end if;
set i=i+1;
end while;
return m_return;
end;
测试一下
Select hzcode_str(‘我是测试’);
结果正确
分享到:
相关推荐
由于汉字编码通常采用GBK或UTF-8,这里使用GBK字符集。 接下来,我们需要填充这个对照表。这一步通常涉及大量的数据插入,例如: ```sql INSERT INTO t_base_pinyin (pin_yin_, code_) VALUES ... ``` 此处省略了...
在提供的压缩包"mysql 汉字拼音数据库.zip"中,可能包含两个SQL文件。第一个文件可能是一个精简版的数据库,只包含了常用汉字,适合那些只需要处理日常交流中常见词汇的场景。第二个文件则可能是一个更全面的汉字库...
例如,GB2312、GBK、UTF-8等字符集编码的处理,以及如何高效地生成和存储拼音和五笔码。 在数据库设计时,可以创建一个特殊的数据表,包含汉字、拼音首码、五笔首码等字段。当用户输入拼音或五笔首码时,数据库系统...
总的来说,MySQL按照汉字拼音排序涉及到字符集的处理和可能的转码操作。在GBK字符集中可以直接排序,而在UTF-8字符集中则需要转码或利用其他工具进行拼音转换。在实际应用中,应根据具体需求和数据量选择最适合的...
GB2312是中国大陆广泛使用的简体中文字符集,它包含了许多常用汉字的编码。在PHP中,我们可以使用iconv函数进行不同编码间的转换。 要实现汉字转拼音,我们首先需要创建一个PHP文件,例如"index.php"。然后,定义一...
在使用这些数据时,需要注意的是,由于是UTF8格式,所以需要在MySQL中创建相应的字符集支持,确保数据能够正确存储和检索。同时,为了保护用户隐私和版权,确保数据来源合法,并在使用时遵守相关法律法规。此外,...
1. **合理选择字符集**:确保数据库表字段使用的字符集一致,推荐使用`utf8mb4`。 2. **限制搜索范围**:在执行模糊搜索时尽可能缩小搜索范围,比如增加额外的筛选条件。 3. **定期更新统计信息**:对于使用全文索引...
MySQL默认的排序规则是基于字节的,这适用于ASCII字符集,但不适用于包含多字节字符集如UTF-8或GBK的中文字符。当我们尝试用`ORDER BY`语句对中文字段进行排序时,如果不进行特殊处理,可能会得到不符合预期的结果。...
然而,这种方法只能处理GB2312或GBK编码的汉字,对于UTF-8编码的数据库,需要使用`CONVERT()`配合`utf8`或`utf8mb4`字符集。 另外,需要注意的是,这种排序方式实际上是基于汉字的拼音首字母,而非笔画或部首。对于...
在上述例子中,`person`表的字符集被设定为`utf8`。 当涉及到中文排序时,MySQL会根据所选的字符集进行排序。在上述代码中,我们使用了`CONVERT`函数配合`GBK`编码进行排序。`CONVERT`函数用于将数据转换为指定的...
- **数据库设计**: 数据库表设计时选择支持Unicode的字符集类型,如MySQL中的`utf8mb4`。 - **文本编辑器**: 大多数现代文本编辑器都默认支持Unicode编码。 #### 七、总结 Unicode作为一种国际化的字符编码标准,...
大多数现代关系型数据库管理系统(如SQL Server、MySQL等)都支持Unicode,因此在创建表时应确保字段的字符集设置为支持Unicode的,如UTF-8或UTF-16。插入生僻字时,可以直接输入Unicode编码或者通过程序处理后插入...
在上述SQL语句中,我们不仅为name字段指定了utf8字符集,同时也指定了utf8_general_ci排序规则,这样在未指定排序子句的情况下,查询结果也将遵循中文的自然排序顺序。 此外,除了在数据库层面进行处理外,还应考虑...
绑定参数()”命令不支持汉字/UTF-8。 14. 修改BUG:VCL相关支持库部分组件在修改个别属性或调用个别方法后不可见,并改进了Delphi版本的支持库SDK。 15. 修改BUG:高级表格在列类型为数值型时,添加新行且省略标题...
常见的汉字编码有GBK、UTF-8等。 ### 网络技术 - **MAC地址**:即物理地址,是设备在网络中的唯一标识符,用于在网络层和数据链路层之间传递数据。 - **IP地址分类**:IPv4地址分为A、B、C、D、E五类,但实际中主要...