UX Improvements for Home page and Accessibility Statement page
This commit is contained in:
107
static/MySQL/6000_p_split.sql
Normal file
107
static/MySQL/6000_p_split.sql
Normal file
@@ -0,0 +1,107 @@
|
||||
|
||||
USE PARTSLTD_PROD;
|
||||
|
||||
/*
|
||||
|
||||
CALL p_split (
|
||||
'noods, chees',
|
||||
','
|
||||
)
|
||||
|
||||
*/
|
||||
|
||||
|
||||
-- Clear previous proc
|
||||
DROP PROCEDURE IF EXISTS p_split;
|
||||
|
||||
|
||||
DELIMITER //
|
||||
CREATE PROCEDURE p_split (
|
||||
IN a_string VARCHAR(4000),
|
||||
IN a_separator VARCHAR(5)
|
||||
-- IN a_allow_empty BIT
|
||||
)
|
||||
BEGIN
|
||||
-- Argument redeclaration
|
||||
-- Variable declaration
|
||||
DECLARE v_has_string BIT;
|
||||
DECLARE v_has_separator BIT;
|
||||
DECLARE v_i_separator INT;
|
||||
DECLARE v_i_start INT;
|
||||
DECLARE v_i_end INT;
|
||||
DECLARE v_current_item VARCHAR(4000);
|
||||
|
||||
-- Argument validation + default values
|
||||
IF a_string IS NULL THEN
|
||||
SET a_string = '';
|
||||
ELSE
|
||||
SET a_string = TRIM(a_string);
|
||||
END IF;
|
||||
IF a_separator IS NULL THEN
|
||||
SET a_separator = '';
|
||||
ELSE
|
||||
SET a_separator = TRIM(a_separator);
|
||||
END IF;
|
||||
/*
|
||||
IF a_allow_empty IS NULL THEN
|
||||
SET a_allow_empty = 0;
|
||||
END IF;
|
||||
*/
|
||||
|
||||
-- Temporary tables
|
||||
DROP TABLE IF EXISTS Split_Temp;
|
||||
|
||||
CREATE TABLE Split_Temp (
|
||||
display_order INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
|
||||
substring VARCHAR(4000) NOT NULL
|
||||
);
|
||||
|
||||
|
||||
-- Parse filters
|
||||
SET v_has_string = CASE WHEN a_string = '' THEN 0 ELSE 1 END;
|
||||
SET v_has_separator = CASE WHEN a_separator = '' THEN 0 ELSE 1 END;
|
||||
|
||||
IF (v_has_string AND v_has_separator) THEN
|
||||
|
||||
SET v_i_start = 1;
|
||||
SET v_i_end = LOCATE(',', a_string);
|
||||
|
||||
WHILE v_i_end > 0 DO
|
||||
SET v_current_item = SUBSTRING(a_string, v_i_start, v_i_end - v_i_start);
|
||||
INSERT INTO Split_Temp (substring) VALUES (v_current_item);
|
||||
|
||||
SET v_i_start = v_i_end + 1;
|
||||
SET v_i_end = LOCATE(',', a_string, v_i_start);
|
||||
END WHILE;
|
||||
|
||||
SET v_current_item = SUBSTRING(a_string, v_i_start);
|
||||
INSERT INTO Split_Temp (substring) VALUES (TRIM(v_current_item));
|
||||
END IF;
|
||||
|
||||
/*
|
||||
-- Select the results from the temporary table
|
||||
SELECT * FROM Split_Temp;
|
||||
|
||||
# Return arguments for test
|
||||
SELECT
|
||||
a_string,
|
||||
a_separator
|
||||
-- a_allow_empty
|
||||
;
|
||||
*/
|
||||
|
||||
END //
|
||||
DELIMITER ;
|
||||
|
||||
/*
|
||||
|
||||
CALL p_split (
|
||||
'noods, cheese ', # a_string
|
||||
',' # a_separator
|
||||
# '0', # a_allow_empty
|
||||
);
|
||||
|
||||
SELECT *
|
||||
FROM SPLIT_TEMP;
|
||||
|
||||
*/
|
||||
Reference in New Issue
Block a user