热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysql取首字母_MySQL中获取拼音首字母的方法

前些天遇到获取标题首字母的问题,数据库数据很多一条条改太费劲了,网上查了下,果然有高人,分享下。在mysql命令窗口中&#x

前些天遇到获取标题首字母的问题,数据库数据很多一条条改太费劲了,网上查了下,果然有高人,分享下。

在 mysql 命令窗口中 :

新建数据表,

DROP TABLE IF EXISTS `pinyin`;

CREATE TABLE `pinyin` (

`letter` char(1) NOT NULL,

`chinese` char(1) NOT NULL,

PRIMARY KEY  (`letter`)

) ENGINE=MyISAM DEFAULT CHARSET=gbk;

插入数据

INSERT INTO `pinyin` VALUES

('A','驁'),

('B','簿'),

('C','錯'),

('D','鵽'),

('E','樲'),

('F','鰒'),

('G','腂'),

('H','夻'),

('J','攈'),

('K','穒'),

('L','鱳'),

('M','旀'),

('N','桛'),

('O','漚'),

('P','曝'),

('Q','囕'),

('R','鶸'),

('S','蜶'),

('T','籜'),

('W','鶩'),

('X','鑂'),

('Y','韻'),

('Z','咗');

仍在mysql命令窗口中执行

DELIMITER $$

DROP FUNCTION IF EXISTS `PINYIN`$$

CREATE FUNCTION `PINYIN`(str CHAR(255)) RETURNS char(255)

BEGIN

DECLARE hexCode char(4);

DECLARE pinyin varchar(255);

DECLARE firstChar char(1);

DECLARE aChar char(1);

DECLARE pos int;

DECLARE strLength int;

SET pinyin    = '';

SET strLength = CHAR_LENGTH(LTRIM(RTRIM(str)));

SET pos       = 1;

SET @str      = (CONVERT(str USING gbk));

WHILE pos <&#61; strLength DO

SET &#64;aChar &#61; SUBSTRING(&#64;str,pos,1);

SET hexCode &#61; HEX(&#64;aChar);

IF hexCode >&#61; "8140" AND hexCode <&#61; "FEA0" THEN

SELECT letter into firstChar

FROM   pinyin

WHERE  chinese >&#61; &#64;aChar

LIMIT  1;

ELSE

SET firstChar &#61; &#64;aChar;

END IF;

SET pinyin &#61; CONCAT(pinyin,firstChar);

SET pos &#61; pos &#43; 1;

END WHILE;

RETURN UPPER(pinyin);

END$$

DELIMITER ;

操作前请备份数据库

使用方法&#xff1a;SELECT pinyin(&#39;获取汉字拼音首字母&#39;);

结果为 hqhzpyszm

或者直接执行 update ‘表’ set ‘字段名’ &#61; pinyin(&#39;字段名&#39;);

如果发现有乱码&#xff1a;

修改 my.ini 文件

default-character-set&#61;gbk

共有两处。。

然后修改mysql data目录下的相应数据库的db.opt配置文件

default-character-set&#61;gbk

default-collation&#61;gbk_chinese_ci

重启mysql后 查询测试&#xff0c;如果还是乱码&#xff0c;将上方命令重新执行下。



推荐阅读
  • 包含phppdoerrorcode的词条 ... [详细]
  • 本文介绍了 Oracle SQL 中的集合运算、子查询、数据处理、表的创建与管理等内容。包括查询部门号为10和20的员工信息、使用集合运算、子查询的注意事项、数据插入与删除、表的创建与修改等。 ... [详细]
  • 在运行于MS SQL Server 2005的.NET 2.0 Web应用中,我偶尔会遇到令人头疼的SQL死锁问题。过去,我们主要通过调整查询来解决这些问题,但这既耗时又不可靠。我希望能找到一种确定性的查询模式,确保从设计上彻底避免SQL死锁。 ... [详细]
  • 本文介绍了如何在 Spring Boot 项目中使用 spring-boot-starter-quartz 组件实现定时任务,并将 cron 表达式存储在数据库中,以便动态调整任务执行频率。 ... [详细]
  • 图数据库与传统数仓实现联邦查询使用CYPHER实现从关系数据库过滤时间序列指标一、MySQL得到研报实体在Oracle中的唯一ID二、Oracle中过滤时间序列数据三、CYPHER ... [详细]
  • 2023年最新指南:如何在PHP中屏蔽警告和错误
    本文详细介绍了如何在PHP中屏蔽警告和错误,包括多种方法和最佳实践,帮助开发者提升代码质量和安全性。 ... [详细]
  • iOS snow animation
    CTSnowAnimationView.hCTMyCtripCreatedbyalexon1614.Copyright©2016年ctrip.Allrightsreserved.# ... [详细]
  • Docker 环境下 MySQL 双主同步配置指南
    本文介绍了如何在 Docker 环境中配置 MySQL 的双主同步,包括目录结构的创建、配置文件的编写、容器的创建与设置以及最终的验证步骤。 ... [详细]
  • 解决网页乱码问题的实用方法
    网页乱码问题在开发中较为常见,主要由文件编码、程序字符集设置和数据库连接字符集设置不当引起。本文将详细介绍如何逐一排查并解决这些问题。 ... [详细]
  • 本文详细介绍了如何在 Oracle 数据库中进行筛选备份和恢复操作,包括权限授予、目录管理、数据导出和导入等步骤。 ... [详细]
  • 在移动端开发中,多点触控手势是提升用户体验的重要手段。然而,目前只有iOS浏览器原生支持手势事件,其他设备需要通过touchstart、touchmove和touchend等基础事件进行自定义实现。本文将详细介绍如何在Vue项目中实现多点触控手势。 ... [详细]
  • 申请地址:https://developer.apple.com/appstore/contact/?topic=expedite 常见申请理由:1. 我们即将发布新产品,这是一个媒体活动,我们无法承担任何风险,因此在多个方面努力提升应用质量。 ... [详细]
  • vue引入echarts地图的四种方式
    一、vue中引入echart1、安装echarts:npminstallecharts--save2、在main.js文件中引入echarts实例:  Vue.prototype.$echartsecharts3、在需要用到echart图形的vue文件中引入:   importechartsfrom&amp;quot;echarts&amp;quot;;4、如果用到map(地图),还 ... [详细]
  • WPF项目学习.一
    WPF项目搭建版权声明:本文为博主初学经验,未经博主允许不得转载。一、前言记录在学习与制作WPF过程中遇到的解决方案。使用MVVM的优点是数据和视图分离,双向绑定,低耦合,可重用行 ... [详细]
  • 事件是程序各部分之间的一种通信方式,也是异步编程的一种实现形式。本文将详细介绍EventTarget接口及其相关方法,以及如何使用监听函数处理事件。 ... [详细]
author-avatar
mobiledu2502889953
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有