在MySQL存儲過程中,沒有內置的LEFT_PAD()
函數
DELIMITER $$
CREATE FUNCTION LEFT_PAD(input_str VARCHAR(255), pad_length INT, pad_char CHAR(1)) RETURNS VARCHAR(255)
BEGIN
DECLARE i INT DEFAULT 0;
DECLARE result VARCHAR(255);
SET result = input_str;
WHILE (LENGTH(result) + pad_length) > LENGTH(result) DO
SET result = CONCAT(pad_char, result);
SET i = i + 1;
END WHILE;
RETURN result;
END$$
DELIMITER ;
這個自定義函數接受3個參數:要填充的字符串(input_str
)、填充長度(pad_length
)和填充字符(pad_char
)。函數將返回填充后的字符串。
現在,您可以在存儲過程中調用此自定義LEFT_PAD()
函數。以下是一個示例存儲過程,該過程使用LEFT_PAD()
函數將用戶ID左側填充零,直到達到指定的長度:
DELIMITER $$
CREATE PROCEDURE PadUserId(IN user_id INT, IN pad_length INT)
BEGIN
DECLARE padded_user_id VARCHAR(255);
SET padded_user_id = LEFT_PAD(CAST(user_id AS CHAR), pad_length, '0');
SELECT padded_user_id;
END$$
DELIMITER ;
要調用此存儲過程,請使用以下命令:
CALL PadUserId(123, 6);
這將返回結果000123
。