问题描述
我想创建一个用'。'替换中间字符的函数。 (点)列值中的(点)(例如:'something'=>'s ....... g')
问题是我不知道如何在函数体内引用当前列的值,我正在寻找JavaScript中类似this
关键字的内容
DELIMITER$$
CREATE FUNCTION middleDots()
RETURNS --current datatype
BEGIN
--how to reference the current column value?
RETURN --current modified colum value
END$$
DELIMITER;
所以我可以使用这样的功能
SELECT middleDots(col1) AS col1,middleDots(col2) AS col2 FROM soMetable;
查询:
MysqL> SELECT col1,-> INSERT(col1,2,CHaraCTER_LENGTH(col1) - 2,REPEAT('.',CHaraCTER_LENGTH
(col1) - 2)) AS col1,-> INSERT(col2,CHaraCTER_LENGTH(col2) - 2,CHaraCTER_LENGTH(col2) - 2)) AS col2
-> FROM soMetable;
解决方法
您可以通过以下方式创建函数:
DROP FUNCTION IF EXISTS middleDots;
DELIMITER $$
CREATE FUNCTION middleDots(`input` VARCHAR(255))
RETURNS VARCHAR(255)
BEGIN
DECLARE `output` varchar(255) DEFAULT '';
SELECT CONCAT(
LEFT(`input`,1),REPEAT('.',CHARACTER_LENGTH(`input`) - 2),RIGHT(`input`,1)) INTO `output`;
RETURN `output`;
END$$
DELIMITER ;
在此代码功能input
中,参数将用column引用。