mysql - 如何从 MySQL 函数中引用当前列值
问题描述
我想创建一个用“。”替换中间字符的函数。列值中的(点)(例如:'something' => 's........g')
问题是我不知道如何引用函数体内的当前列值,我正在寻找类似this
JavaScript 中的关键字的东西
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, 2, CHARACTER_LENGTH(col2) - 2, REPEAT('.', 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
参数将被列引用。
推荐阅读
- reactjs - React 多组件绑定
- python - 在 Python 中从文件中分离值
- javascript - 如何检查为 JavaScript 中的内置函数编写的实际代码?例如:toUpperCase() 或 toLowerCase()
- selenium - Selenium 错误:USB:usb_device_handle_win.cc:1058 无法从节点连接读取描述符
- python - 如何自动更改 QListWidget 中所选项目的颜色
- pandas - change multiple date time formats to single format in pandas dataframe
- time-complexity - 此代码是否具有时间复杂度 O(n^5) 或 O(n^3) 或其他任何内容?
- asp.net - 如何使用连接的两个值在我的数据表中创建此列,并用破折号分隔?
- python - 从网站上抓取的不需要的 CSV 输出|使用 Python 和 Selenium
- c++ - 将 boost 预处理器序列扩展到 std::tuple