· 8 years ago · Mar 08, 2018, 02:46 PM
1CREATE TABLE `ownerships` (
2 `ownership` varchar(255) NOT NULL,
3 `suffix` varchar(255) NOT NULL,
4 `regexp` varchar(1000) NOT NULL
5) ENGINE=InnoDB DEFAULT CHARSET=utf8
6
7
8INSERT INTO app_system.ownerships (ownership, suffix, `regexp`) VALUES (',inc', 'inc', '[\\s\\.,]+inc[\\s\\.,]*$');
9INSERT INTO app_system.ownerships (ownership, suffix, `regexp`) VALUES (',inc', 'Incorporated', '[\\s\\.,]+incorporated[\\s\\.,]*$');
10
11DROP FUNCTION IF EXISTS unifCompanyName;
12CREATE FUNCTION unifCompanyName(name VARCHAR(1000)) RETURNS VARCHAR(1000) DETERMINISTIC
13
14 BEGIN
15 DECLARE substitute VARCHAR(255);
16 DECLARE reg_expression VARCHAR(1000);
17 DECLARE is_match TINYINT DEFAULT 0;
18
19 DECLARE done INT DEFAULT 0;
20 DECLARE cur CURSOR FOR SELECT ownership, `regexp` FROM app_system.ownerships;
21 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
22
23 OPEN cur;
24
25 search_loop:
26 LOOP
27 FETCH cur INTO substitute, reg_expression;
28
29 SELECT name REGEXP reg_expression INTO is_match;
30
31 IF done = 1 THEN
32 LEAVE search_loop;
33 END IF;
34
35 IF is_match = 1 THEN
36 SELECT REGEXP_REPLACE(name, reg_expression, substitute) into name;
37 LEAVE search_loop;
38 END IF;
39
40 END LOOP;
41
42 CLOSE cur;
43
44 RETURN name;
45 END;
46
47SELECT unifCompanyName('Apple inc'); # Ñовпадает Ñ ÑущеÑтвующими шаблонами, заменÑем
48SELECT unifCompanyName('Apple .inc '); # Ñовпадает Ñ ÑущеÑтвующими шаблонами, заменÑем
49SELECT unifCompanyName('Apple . , inc.'); # Ñовпадает Ñ ÑущеÑтвующими шаблонами, заменÑем
50SELECT unifCompanyName('Apple . , inc. Some'); # не Ñовпадает Ñ ÑущеÑтвующими шаблонами, оÑтаетÑÑ ÐºÐ°Ðº еÑть
51SELECT unifCompanyName('Apple incorp'); # не Ñовпадает Ñ ÑущеÑтвующими шаблонами, оÑтаетÑÑ ÐºÐ°Ðº еÑть
52SELECT unifCompanyName('Apple incorporated'); # Ñовпадает Ñ ÑущеÑтвующими шаблонами, заменÑем
53SELECT unifCompanyName('Apple , . , ,, , , . incorporated ,,. . .. '); # Ñовпадает Ñ ÑущеÑтвующими шаблонами, заменÑем