【数据库-MySql】单姓第二字用*号代替,复姓第三个字用*号代替。

需求

门诊患者姓名取药显示

需求:单姓第二字用*号代替,复姓第三个字用*号代替。

方案一

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

吴铭

 

结果

【数据库-MySql】单姓第二字用*号代替,复姓第三个字用*号代替。_第1张图片

你可能感兴趣的:(数据库)