需求
门诊患者姓名取药显示
需求:单姓第二字用*号代替,复姓第三个字用*号代替。
方案一
SELECT p.patient_name as real_name, CASE WHEN CHAR_LENGTH(p.patient_name) > 1 and fx.xm is NULL THEN CONCAT(LEFT(p.patient_name,1),'*',RIGHT(p.patient_name,CHAR_LENGTH(p.patient_name)-2)) WHEN CHAR_LENGTH(p.patient_name) > 1 and fx.xm is not NULL THEN CONCAT(LEFT(p.patient_name,2),'*',RIGHT(p.patient_name,CHAR_LENGTH(p.patient_name)-3)) ELSE p.patient_name end as show_name
FROM patient AS p LEFT JOIN bjx AS fx ON p.patient_name REGEXP CONCAT('^', fx.xm, '.'); |
方案二
SELECT p.patient_name as real_name, CASE WHEN CHAR_LENGTH(p.patient_name) > 1 and fx.xm is NULL THEN CONCAT(LEFT(p.patient_name,1),'*',RIGHT(p.patient_name,CHAR_LENGTH(p.patient_name)-2)) WHEN CHAR_LENGTH(p.patient_name) > 1 and fx.xm is not NULL THEN CONCAT(LEFT(p.patient_name,2),'*',RIGHT(p.patient_name,CHAR_LENGTH(p.patient_name)-3)) ELSE p.patient_name end as show_name FROM patient AS p LEFT JOIN bjx AS fx ON p.patient_name LIKE CONCAT(fx.xm, '_%'); |
复姓表【bjx】
id | xm |
1 | 欧阳 |
2 | 太史 |
3 | 端木 |
4 | 上官 |
5 | 司马 |
6 | 东方 |
7 | 独孤 |
8 | 南宫 |
9 | 万俟 |
10 | 闻人 |
11 | 夏侯 |
12 | 诸葛 |
13 | 尉迟 |
14 | 公羊 |
15 | 赫连 |
16 | 澹台 |
17 | 皇甫 |
18 | 宗政 |
19 | 濮阳 |
20 | 公冶 |
21 | 太叔 |
22 | 申屠 |
23 | 公孙 |
24 | 慕容 |
25 | 仲孙 |
26 | 钟离 |
27 | 长孙 |
28 | 宇文 |
29 | 司徒 |
30 | 鲜于 |
31 | 司空 |
32 | 闾丘 |
33 | 子车 |
34 | 亓官 |
35 | 司寇 |
36 | 巫马 |
37 | 公西 |
38 | 颛孙 |
39 | 壤驷 |
40 | 公良 |
41 | 漆雕 |
42 | 乐正 |
43 | 宰父 |
44 | 谷梁 |
45 | 拓跋 |
46 | 夹谷 |
47 | 轩辕 |
48 | 令狐 |
49 | 段干 |
50 | 百里 |
51 | 呼延 |
52 | 东郭 |
53 | 南门 |
54 | 羊舌 |
55 | 微生 |
56 | 公户 |
57 | 公玉 |
58 | 公仪 |
59 | 梁丘 |
60 | 公仲 |
61 | 公上 |
62 | 公门 |
63 | 公山 |
64 | 公坚 |
65 | 左丘 |
66 | 公伯 |
67 | 西门 |
68 | 公祖 |
69 | 第五 |
70 | 公乘 |
71 | 贯丘 |
72 | 公皙 |
73 | 南荣 |
74 | 东里 |
75 | 东宫 |
76 | 仲长 |
77 | 子书 |
78 | 子桑 |
79 | 即墨 |
80 | 达奚 |
81 | 褚师 |
82 | 吴铭 |