我的表中有一列包含10位hts代码(0000.000000(。有些值没有完整的停止点(0000000000(。如何将句号添加到所有没有句号的行?
编辑列类型为VARCHAR我想更新所有没有句号的行。
作为更新的一部分,我会使用REPLACE()
从所有这些列中删除句号,然后您可以使用CONCAT()
LEFT()
、RIGHT()
和SUBSTRING()
应用一些简单的逻辑像这样将简单的0000000000
更改为0000.00.0000
,而不是试图只识别没有点的列
UPDATE table
set column = CONCAT(
LEFT(REPLACE(column, '.', ''),4),
'.' ,
SUBSTRING(REPLACE(column, '.', ''),5,2),
'.',
RIGHT(REPLACE(column, '.', ''),4)
);
使用选择测试它,这样你就不会损坏
SELECT some_identifying_column,
CONCAT(
LEFT(REPLACE(column, '.', ''),4),
'.' ,
SUBSTRING(REPLACE(column, '.', ''),5,2),
'.',
RIGHT(REPLACE(column, '.', ''),4)
) as justtesting;
想到了另一种使用insert
的方法。正如其他人已经提到的,在将句号插入字符串的第5和第8位置之前,最好先删除句号
select *, insert(insert(replace(hts,'.',''),5,0,'.'),8,0,'.')
from t;