我有一张桌子上面有一些值如下,
Slno
---------
IFAAA1121
IFAAA1122
IMBBB1121
IMBBB11223我的目标是将SlNo重新格式化为以下格式,
Slno
---------
IF-AAA-1121
IF-AAA-1122
IM-BBB-1121
IM-BBB-11223怎么可能?
我的问题是:
UPDATE `certificate_log_uae`
SET `DeviceSerialNumberTemp` = REPLACE(LEFT(DeviceSerialNumberTemp,2),
LEFT(DeviceSerialNumberTemp,2).'-')发布于 2018-10-30 07:06:19
Substr()函数从输入字符串中获取不同位置和长度的子字符串。尝试以下几点:
UPDATE `certificate_log_uae`
SET `DeviceSerialNumberTemp` = CONCAT(SUBSTR(`DeviceSerialNumberTemp`, 1, 2),
'-',
SUBSTR(`DeviceSerialNumberTemp`, 3, 3),
'-',
SUBSTR(`DeviceSerialNumberTemp`, 6)
) 发布于 2018-10-30 07:05:19
一种方法是使用连接构建您想要的最终字符串:
UPDATE certificate_log_uae
SET DeviceSerialNumberTemp = CONCAT(LEFT(DeviceSerialNumberTemp, 2),
'-',
SUBSTRING(DeviceSerialNumberTemp, 3, 3),
'-',
SUBSTRING(DeviceSerialNumberTemp, 6));

如果您使用的是MySQL 8+或更高版本,那么有一个非常简单的基于正则表达式的解决方案使用REGEXP_REPLACE。
SELECT
DeviceSerialNumberTemp,
REGEXP_REPLACE(DeviceSerialNumberTemp, '(.{2})(.{3})(.*)', '$1-$2-$3') AS output
FROM certificate_log_uae;
发布于 2018-10-30 07:26:54
尝试简单的insert函数:
select Slno, insert(insert(slno, 3, 0, '-'), 7, 0, '-') from tbl要更新值,请尝试:
update certificate_log_uae set
DeviceSerialNumberTemp = insert(insert(DeviceSerialNumberTemp , 3, 0, '-'), 7, 0, '-')https://stackoverflow.com/questions/53058965
复制相似问题