将MySQL手机号掩码逻辑转换为MS SQL查询实现
MySQL手机号掩码逻辑转换为MS SQL语句
以下是将原MySQL手机号掩码逻辑转换后的MS SQL查询语句,核心是替换MySQL特有的函数为MS SQL对应实现:
CASE WHEN LEN(phoneNumber) < 3 THEN phoneNumber WHEN LEN(phoneNumber) < 7 THEN LEFT(phoneNumber, 3) + REPLICATE('*', LEN(phoneNumber) - 3) ELSE LEFT(phoneNumber, 3) + REPLICATE('*', LEN(phoneNumber) - 7) + RIGHT(phoneNumber, 4) END AS masked_phone
函数替换说明:
- MySQL的
LENGTH()→ MS SQL的LEN():用于获取字符串长度 - MySQL的
RPAD()→ MS SQL的REPLICATE():生成指定数量的重复字符,替代填充逻辑更简洁 - MySQL的
SUBSTR(...,1,3)→ MS SQL的LEFT(...,3):直接取字符串前3位,语义更清晰 - 字符串拼接:MS SQL支持用
+运算符拼接字符串,若需兼容NULL值(避免某部分为NULL时整体返回NULL),可改用CONCAT()函数:
CASE WHEN LEN(phoneNumber) < 3 THEN phoneNumber WHEN LEN(phoneNumber) < 7 THEN CONCAT(LEFT(phoneNumber, 3), REPLICATE('*', LEN(phoneNumber) - 3)) ELSE CONCAT(LEFT(phoneNumber, 3), REPLICATE('*', LEN(phoneNumber) - 7), RIGHT(phoneNumber, 4)) END AS masked_phone
内容的提问来源于stack exchange,提问作者codeman
相关产品推荐
相关产品推荐

