Mysql 根据首字母查询

一、函数

这里是通过函数调用进行获取汉字的拼音首字母。

DELIMITER $$
CREATE FUNCTION `pinyin`(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf8
DETERMINISTIC
BEGIN
DECLARE V_COMPARE VARCHAR(255);
DECLARE V_RETURN VARCHAR(255);
DECLARE I INT;
SET I = 1;
SET V_RETURN = '';
#循环截取字符
while I < LENGTH(P_NAME) do
SET V_COMPARE = SUBSTR(P_NAME, I, 1);
IF (V_COMPARE != '') THEN
#字符串拼接
SET V_RETURN = CONCAT(V_RETURN, to_frist_pinyin(V_COMPARE));
END IF;
SET I = I + 1;
end while;
IF (ISNULL(V_RETURN) or V_RETURN = '') THEN
SET V_RETURN = P_NAME;
END IF;
RETURN V_RETURN;
END$$

CREATE FUNCTION `to_frist_pinyin`(P_NAME VARCHAR(255)) RETURNS varchar(255) CHARSET utf8
BEGIN
DECLARE V_RETURN VARCHAR(255);
DECLARE V_FIRST_CHAR VARCHAR(255);
#这块主要意思是假如传入的是英文串的话,只取首字母
set V_FIRST_CHAR =UPPER(LEFT(CONVERT(P_NAME USING gbk),1));
set V_RETURN = V_FIRST_CHAR;
#如果是这些特殊符号,直接返回#
IF V_FIRST_CHAR in ('(',')','《','》')
THEN SET V_RETURN = '';
#两个不相等只有一个情况,V_FIRST_CHAR是中文汉字或者中文符号。
elseif LENGTH( V_FIRST_CHAR) <> CHARACTER_LENGTH( V_FIRST_CHAR )
then
SET V_RETURN = ELT(INTERVAL(CONV(HEX(left(CONVERT(P_NAME USING gbk),1)),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),
'A','B','C','D','E','F','G','H','J','K','L','M','N','O','P','Q','R','S','T','W','X','Y','Z');
#如果是下面的直接原样输出
elseif V_FIRST_CHAR in ('A','B','C','D','E','F','G','H','J','K','L','M','N','O','P','Q','R','S','T','W','X','Y','Z',
'1','2','3','4','5','6','7','8','9','0','*','+','-','=','/','\\','{','}','[',']','(',')','(',')')
then SET V_RETURN = V_RETURN;
#其他的输出#
else
SET V_RETURN = '#';
END IF;
#为空的话输出#
RETURN IFNULL(V_RETURN,'#');
END$$
DELIMITER ;

二、执行遇到问题

set global log_bin_trust_function_creators = 1;

设置为1,创建完后,可以再设置回去。

简单介绍一下,当二进制日志启用后,这个变量就会启用。它控制是否可以信任存储函数创建者,不会创建写入二进制日志引起不安全事件的存储函数。如果设置为0(默认值),用户不得创建或修改存储函数,除非它们具有除CREATE ROUTINE或ALTER ROUTINE特权之外的SUPER权限。 设置为0还强制使用DETERMINISTIC特性或READS SQL DATA或NO SQL特性声明函数的限制。 如果变量设置为1,MySQL不会对创建存储函数实施这些限制。

三、如何使用

select id,title,newstime,titlepic from phome_ecms_photo where pinyin(left(title,1))='D' limit 100

举例,要查询标题字段以D开头的数据,查询结果如下:

PPT演示技巧—如何用 PPT 制作动态照片墙

在生日会或年会上会看到PPT中播放的是动态照片墙模式,与中规中矩的图片展示比起来就显得更为精美,那么动态照片墙应该如何制作呢?今天我们一起来学习下吧。

第一步,点击【插入】-【图片】,在幻灯片中插入多张图片并调整大小与位置。

>

第二步,选中所有图片后按组合键【Ctrl+G】创建组合即将所有图片组合在一起,然后点击【动画】。

>

第三步,在右侧菜单栏中点击【添加效果】,动画路径选择向右,并拉取适当动画路径终点。

>

第四步,鼠标右键点击动画列表中的组合17,选择【效果选项】。

>

第五步,在对话框中取消勾选【平稳开始】与【平稳结束】后点击【确定】。

>

第六步,在下一页幻灯片中点击【插入】-【形状】,插入两个椭圆图形分别放置在幻灯片上下方,并调整大小与位置。

>

第七步,选取两个椭圆图形后点击【填充】将颜色填充为白色,轮廓颜色选择【无线条颜色】。

>

第八步,选择图形后点击【形状效果】-【阴影】,选择外部阴影样式,同样的另一个图形也是一样的操作方法添加阴影效果。

>

最后将两个椭圆图形复制到第一张幻灯片中,调整大小与位置就完成啦。

>

以上就是在PPT中制作动态照片墙的具体步骤了,操作起来也并不太难,大家都学会了吗?

Excel表格技巧—Excel如何批量配对

在我们平时使用excel表格办公时,经常需要一个批量匹配的功能。简言之就是将一个表格的内容与另一个表格相对应的配对填入。那么它是如何实现的呢?下面我们就来学习一下。

首先打开两个表格,我们想要将第二个表格中空白的“称号”一栏自动配对填入:

点击第二个单元格需要填入称号的某个单元格,这里选择“C2”,点击工具栏上的【插入】,下拉菜单中选择【插入函数】:

在弹出的对话框中选择“IFERROR”函数,点击确定:

在弹出的函数参数对话框中,“值”一栏我们需要再添加一个函数,也就是常说的嵌套,该函数是VLOOKUP,输入“(”,再点击A2:

用英文符号“,”隔开,选择第一个表格中的所有数据单元格:

继续英文标点“,”隔开,看到称号一栏在第一个表格中的第三列,我们输入“3”,“,”隔开,再输入“0”,末尾输入“)”。在错误值一栏输入英文符号双引号“”””,点击确定:

最后我们看到在第一个表格中有称号的同学全部自动匹配,而没不存在的同学,称号一栏单元格是空白:

以上就是EXCEL表格技巧中关于Excel如何批量配对的技巧,是不是觉得很简单?你们学会了么?

Excel表格技巧—Excel如何制作直观数据条

在我们平时使用Excel表格办公时,会接触大量的数据,面对繁多的数字往往会眼花缭乱。这里介绍一个制作直观数据条的办法,下面我们一起学习一下。

首先打开一个Excel表格,我们要将完成百分率一栏做成直观的数据条:

选中该列需要制作数据条的单元格,【开始】选项下选择【条件格式】,弹出的菜单中再点击【数据条】,并选择想要的样式:

最后直观的数据条制作完成:

以上就是Excel表格技巧中关于Excel如何制作直观数据条的技巧,是不是觉得很简单?你们学会了么?

WPS表格基础编辑技巧

今天带大家学习表格的入门操作。

本期的知识点包括:数据隔行隔列输入,行列的插入、删除、隐藏和取消隐藏。

■ 很多初学者在输入数据的时候,使用的是鼠标单击输入法,这样即耗时又耗力。

下面教大家一个快捷操作。

输入第一个数据后,点击Enter(又称Return/回车键) 隔行输入

■ 点击Tab隔列输入,也可以点击键盘的上下左右键,快速切换单元格。

■ 有时会遇到在单元格里输入数据,数据太长显示不全面。

此时可以双击列标交叉处,快速调整数据显示的合适列宽。

■ 若要在标题B和标题C之间插入标题D,该如何操作呢?

选中列标位置,右键选择插入列,就可快速选择在当前列的前面插入任意数字列。

插入行的方法也相同。

■ 如果想隐藏行或者列,可以选中需要隐藏的行或者列,右键选择隐藏。

想要取消隐藏行或者列,需要选中隐藏行或者列左右两侧的行和列,再右键取消隐藏。

想要删除行或者列,右键选择删除即可。

■ 若我们需要进行大量数据填充。

可以选中一个单元格,将鼠标放置在单元格右下角。

会出现+字形的填充柄,下拉即可填充数据。

填充柄的功能十分强大。下期将详细介绍填充柄的功能,继续一起学习吧!

Word文字技巧—Word中如何快速给目录页码加括号

在编辑Word文档的时候,如何快速给目录页码加括号呢?今天跟大家分享的就是办公小技巧—word中如何快速给目录页码加括号。

具体步骤如下:

打开word文档,按下Alt键,并同时用鼠标左键选中所有页码

然后快捷键Ctrl+H,在出现的对话框中,将查找内容设置为“([0-9]{1,})”,替换内容设置为“(\1)”,点击【高级搜索】,勾选【使用通配符】,最后选择【全部替换】:

是不是很方便操作呢?赶紧打开WPS试试吧!

如何将 PPT 以讲义的形式打印出来

WPS有很多的使用技巧,而且现在新版的WPS还有非常多的功能,那么今天小编就来给大家讲解一下——如何将 PPT 以讲义的形式打印出来。

第一步,我们点击文件,在下拉列表中点击打印,然后在右侧列表中点击打印预览:

然后点击幻灯片:

在下拉列表中点击讲义,这里我选择第三个:

如何快速对齐Excel中的数字 

Excel表格其实藏有很多的小技巧,但大多数人使用的都是最基本的表格制作,今天讲一讲如何快速对齐Excel中的数字,一起看看吧!

有的时候我们会发现有一些序号和数字,由于字数不一样,所以导致不能够很好的对齐:

首先我们将单元格选中:

鼠标右击设置单元格格式,点击数字下方查找,自定义在类型这里输入00000:

然后这样数字就能够快速对齐了:

这个小技巧是不是非常简单呢?你掌握了吗?

如何使用Word里的论文版式功能

Word文档其实藏有很多的小技巧,但大多数人使用的都是最基本的办公操作,那么,今天讲一讲如何使用Word里的论文版式功能,一起看看吧!

点击特色应用,点击下方论文版式:

然后将文档进行保存:

选择一个自己需要的版式:

点击开始排版:

排版过程中需要大概一分钟时间左右:

完成后,我们可以点击预览和下载:

点击立即下载:

你们会发现我们写的论文就有一个非常精美的版式了,输入自己的信息即可:

非常简单呢!