微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从MySQL函数引用当前列值

如何解决如何从MySQL函数引用当前列值

我想创建一个用'。'替换中间字符的函数。 (点)列值中的(点)(例如:'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引用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。