在波斯语中(最好说波斯语),像 32.98 这样的十进制数写成 32/98(使用斜线而不是点)
例如,我有一个表 X 和列 L(varchar 20)。我想定义一个替换 any 的 MySQL 函数/
。如果在 L 中插入任何值,则在保存之前会替换值。
当然可以在执行查询中实现,但我想在 MySQL 中实现。
在波斯语中(最好说波斯语),像 32.98 这样的十进制数写成 32/98(使用斜线而不是点)
例如,我有一个表 X 和列 L(varchar 20)。我想定义一个替换 any 的 MySQL 函数/
。如果在 L 中插入任何值,则在保存之前会替换值。
当然可以在执行查询中实现,但我想在 MySQL 中实现。
只需使用REPLACE()
SELECT L AS origL, REPLACE(L, '/', '.') AS newL
所以在你的INSERT
声明中,
INSERT INTO X (L) VALUES(REPLACE('yourValueHere', '/', '.'))
更新 1
使用Trigger
:
DELIMITER $$
CREATE TRIGGER replaceToPeriod
BEFORE INSERT ON X
FOR EACH ROW
BEGIN
SET NEW.L = REPLACE(NEW.L, '/', '.');
END $$
DELIMITER ;
执行后TRIGGER
,您现在可以直接插入一条记录,触发器会自动替换该值。
INSERT INTO X (L) VALUES('32/97')
更新 2
使用STORED PROCEDURE
DELIMITER $$
CREATE PROCEDURE InsertRecord(IN _val VARCHAR(20))
BEGIN
INSERT INTO X (L) VALUES(REPLACE(_val, '/', '.'));
END $$
DELIMITER ;
调用程序:
CALL InsertRecord('32/97');