@Chiang
2021-09-12T08:37:51.000000Z
字数 1603
阅读 465
2021-09
树形表
拼音首字母
CREATE FUNCTION `queryChildrenAreaInfo` (Id INT)
RETURNS VARCHAR (4000)
BEGIN
DECLARE sTemp VARCHAR(400);
DECLARE sTempChd VARCHAR(400);
SET sTemp = '$';
SET sTempChd = cast(Id as char);
WHILE sTempChd is not NULL DO
SET sTemp = CONCAT(sTemp,',',sTempChd);
SELECT group_concat(org_Id) INTO sTempChd FROM sys_organise where FIND_IN_SET(org_parentId,sTempChd)>0;
END WHILE;
return sTemp;
END
# 调用方式:select queryChildrenAreaInfo(1);
select * from t_areainfo where FIND_IN_SET(id, queryChildrenAreaInfo(20));
CREATE DEFINER=`by`@`%` FUNCTION `fun_pinyin`(`P_NAME` VARCHAR(255)) RETURNS varchar(255) CHARSET utf8
NO SQL
BEGIN
DECLARE V_COMPARE VARCHAR(255);
DECLARE V_RETURN VARCHAR(255);
DECLARE I INT;
SET I = 1;
SET V_RETURN = '';
while I <= char_length(P_NAME) do
SET V_COMPARE = SUBSTR(P_NAME, I, 1);
IF (V_COMPARE != '') THEN
SET V_RETURN = CONCAT(V_RETURN, fun_first_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 DEFINER=`by`@`%` FUNCTION `fun_first_pinyin`(`P_NAME` VARCHAR(5)) RETURNS varchar(5) CHARSET utf8
NO SQL
BEGIN
DECLARE V_RETURN VARCHAR(5);
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');
IF ISNULL(V_RETURN) or V_RETURN = '' THEN
RETURN '';
ELSE
RETURN V_RETURN;
END IF;
END
参考资料:
数据库树形表结构如何查询
MYSQL 传汉字获取拼音首字母
树形权限表的设计
树形结构表3种设计分析分享
树形结构的数据库表设计