mysql replace 不区分大小写_MySQL中不区分大小写的REPLACE?

复用功能的一个口语由fvox。

DELIMITER |

CREATE FUNCTION case_insensitive_replace (REPLACE_WHERE text, REPLACE_THIS text, REPLACE_WITH text)

RETURNS text

DETERMINISTIC

BEGIN

DECLARE last_occurency int DEFAULT '1';

IF LCASE(REPLACE_THIS) = LCASE(REPLACE_WITH) OR LENGTH(REPLACE_THIS) < 1 THEN

RETURN REPLACE_WHERE;

END IF;

WHILE Locate(LCASE(REPLACE_THIS), LCASE(REPLACE_WHERE), last_occurency) > 0 DO

BEGIN

SET last_occurency = Locate(LCASE(REPLACE_THIS), LCASE(REPLACE_WHERE));

SET REPLACE_WHERE = Insert(REPLACE_WHERE, last_occurency, LENGTH(REPLACE_THIS), REPLACE_WITH);

SET last_occurency = last_occurency + LENGTH(REPLACE_WITH);

END;

END WHILE;

RETURN REPLACE_WHERE;

END;

|

DELIMITER ;

小测试:

SET @str = BINARY 'New York';

SELECT case_insensitive_replace(@str, 'y', 'K');

答案:New Kork

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值