如何在SQL中为一列添加多个小数点



我的表中有一列包含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;

最新更新