1.函数:在mysql里面执行语句

DELIMITER $$
#数据库名字
USE `test`$$

DROP FUNCTION IF EXISTS `getPY`$$

#用户名+主机
CREATE DEFINER=`root`@`127.0.0.1` FUNCTION `getPY`(in_string VARCHAR(21845)) RETURNS VARCHAR(21845) CHARSET utf8
BEGIN
#截取字符串,每次做截取后的字符串存放在该变量中,初始为函数参数in_string值
DECLARE tmp_str VARCHAR(21845) CHARSET gbk DEFAULT '' ; 
#tmp_str的长度
DECLARE tmp_len SMALLINT DEFAULT 0;
#tmp_str的长度
DECLARE tmp_loc SMALLINT DEFAULT 0;
#截取字符,每次 left(tmp_str,1) 返回值存放在该变量中
DECLARE tmp_char VARCHAR(2) CHARSET gbk DEFAULT '';
#结果字符串
DECLARE tmp_rs VARCHAR(21845)CHARSET gbk DEFAULT '';
#拼音字符,存放单个汉字对应的拼音首字符
DECLARE tmp_cc VARCHAR(2) CHARSET gbk DEFAULT '';
#初始化,将in_string赋给tmp_str
SET tmp_str = in_string;
#初始化长度
SET tmp_len = LENGTH(tmp_str);
#如果被计算的tmp_str长度大于0则进入该while
WHILE tmp_len > 0 DO 
#获取tmp_str最左端的首个字符,注意这里是获取首个字符,该字符可能是汉字,也可能不是。
SET tmp_char = LEFT(tmp_str,1);
#左端首个字符赋值给拼音字符
SET tmp_cc = tmp_char;
#获取字符的编码范围的位置,为了确认汉字拼音首字母是那一个
SET tmp_loc=INTERVAL(CONV(HEX(tmp_char),16,10),0xB0A1,0xB0C5,0xB2C1,0xB4EE,0xB6EA,0xB7A2,0xB8C1,0xB9FE,0xBBF7,0xBFA6,0xC0AC
,0xC2E8,0xC4C3,0xC5B6,0xC5BE,0xC6DA,0xC8BB,0xC8F6,0xCBFA,0xCDDA ,0xCEF4,0xD1B9,0xD4D1);
#判断左端首个字符是多字节还是单字节字符,要是多字节则认为是汉字且作以下拼音获取,要是单字节则不处理。如果是多字节字符但是不在对应的编码范围之内,即对应的不是大写字母则也不做处理,这样数字或者特殊字符就保持原样了
IF (LENGTH(tmp_char)>1 AND tmp_loc>0 AND tmp_loc<24) THEN
#获得汉字拼音首字符
SELECT ELT(tmp_loc,'A','B','C','D','E','F','G','H','J','K','L','M','N','O','P','Q','R','S','T','W','X','Y','Z') INTO tmp_cc; 
END IF;
#将当前tmp_str左端首个字符拼音首字符与返回字符串拼接
SET tmp_rs = CONCAT(tmp_rs,tmp_cc);
#将tmp_str左端首字符去除
SET tmp_str = SUBSTRING(tmp_str,2);
#计算当前字符串长度
SET tmp_len = LENGTH(tmp_str);
END WHILE;
#返回结果字符串
RETURN tmp_rs;
END$$

DELIMITER ;

2.写sql语句:

<!--拼音简写:如张三,可以通过zs查询到-->
<select id="selectGetPY" parameterType="string" resultMap="BaseResultMap">select * from student_infowhere getPY(name) like CONCAT('%',#{name},'%')
</select>

sql语句:简写拼音查询相关推荐

  1. 【转】在SQL Server中通过SQL语句实现分页查询

    在SQL Server中通过SQL语句实现分页查询 2008年01月06日 星期日 12:28 建立表: CREATE TABLE [TestTable] ( [ID] [int] IDENTITY ...

  2. sql语句提高数据库查询效率

    可以通过以下多个方面优化sql语句提高数据库查询效率 1. 应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描. 2. 应尽量避免在 where 子 ...

  3. 在JDBC中实现SQL语句的模糊查询

    在JDBC中实现SQL语句的模糊查询 在大多数情况下我们可以在JDBC中写入sql语句通过占位符的方式来直接查询,但是如果要进行模糊查询,需要转义字符才能够正常查询. sql语句: select * ...

  4. SQL语句多表查询:【多表连查】和【子查询】

    SQL语句多表查询:[多表连查]和[子查询] 说明:insert.update.delete只针对[一张表]执行操作. 说明:select可以查询一张表.也可以查询多张表. 说明:多表查询分为:[多表 ...

  5. mongodb 跟踪SQL语句及慢查询收集

    有个需求:跟踪mongodb的SQL语句及慢查询收集 第一步:通过mongodb自带函数可以查看在一段时间内DML语句的运行次数. 在bin目录下面运行  ./mongostat -port 端口号  ...

  6. mysql语句统计总数_一条sql语句实现统计查询_MySQL

    bitsCN.com 一条sql语句实现统计查询 如图:程序员在进行如下的统计时,现在提供两种实现方案: 方案一:运用 SEKECT CASE WHEN EXPLAIN SELECT count(*) ...

  7. mysql查询数量语句_mysql语句统计总数_一条sql语句实现统计查询_MySQL

    bitsCN.com 一条sql语句实现统计查询 如图:程序员在进行如下的统计时,现在提供两种实现方案: 方案一:运用 SEKECT CASE WHEN EXPLAIN SELECT count(*) ...

  8. SQL语句之分组查询--GROUP BY(group by)

    SQL语句之分组查询–GROUP BY(group by) 语法 select 聚合函数,列(要求出现在group by的后面)from 表where 筛选条件group by 分组的列表order ...

  9. mysql 怎么查询慢sql语句_Mysql中 查询慢的 Sql语句的记录查找

    Mysql中 查询慢的 Sql语句的记录查找 慢查询日志 slow_query_log,是用来记录查询比较慢的sql语句,通过查询日志来查找哪条sql语句比较慢,这样可以对比较慢的sql可以进行优化. ...

最新文章

  1. python写出的程序如何给别人使用-涨姿势!这些小技巧让小白也可以写出更优雅的Python代码!...
  2. 如何添加和删除LaunchPad里面的程序图标
  3. boost::serialization模块测试extended_type_info的实现,使用多个共享库时有效
  4. Java 8:Lambda表达式与自动关闭
  5. MyEclipes+html+jsp+mysql实现一个物流信息网
  6. 分享几道经典的javascript面试题
  7. 递归入门 斐波那契数列
  8. Hibernate的事务管理
  9. 【软考】数据库数据库建模复习指南
  10. 简单的java图像裁减
  11. 计算机协议-http
  12. Nginx面试题总结
  13. Sniffer数据报文解码详解
  14. 俄亥俄州立大学计算机专业排名,俄亥俄州立大学计算机科学专业
  15. cartographer探秘第三章之对比实验
  16. 倪衡:大数据时代小微企业质量管理创新
  17. php iphone图片旋转图片,php识别翻转iphone拍摄的颠倒图片
  18. MTK平台如何切换SIM卡槽
  19. apple watch更新系统时出现红色感叹号怎么办?
  20. 基于重心距离识别的蠓虫分类模型(唯一能看的只有代码)

热门文章

  1. c语言 调用 .cpp,C语言三方库的调用和编写
  2. 判断TTS语音朗读是否结束
  3. 巨人2012年Q2财报解读:刘伟电话会议回答分析师提问
  4. “美亚杯”第二届中国电子数据取证大赛答案解析(个人赛)
  5. Java Web --HTML(尚硅谷2022版Javaweb)
  6. 基因组学(Geonomics)
  7. java第三方类库Guava开源组件使用
  8. 吴恩达机器学习作业8(下)--- 推荐系统
  9. 计算机程序设计c++ 9-7:类的抽象描述举例-汽车类及圆类设计
  10. FJUT 2019暑假第三次周赛 C - 郭先生的魔法阵