需求
门诊患者姓名取药显示
需求:单姓第二字用*号代替,复姓第三个字用*号代替。
方案一
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 |
吴铭 |