繁体   English   中英

如何在 SQLite 中的字符串中间插入一个字符

[英]How can I insert a character in the middle of a string in SQLite

我的数据库中有一个列,其中包含一些具有以下格式的数字:

15020
13000
5000
7070
125355
1850000

我需要更新列值,在最后两位数字之前插入一个“,”。 我希望结果是这样的:

150,20
130,00
50,00
70,70
1253,55
18500,00

我试过这个:

UPDATE table
SET [column] = replace([column],substr([column],-2),','||substr([column],-2));

但它没有按我预期的那样工作,这就是我得到的回报:

150,20
13,000
5,000
,70,70
1253,55
185,0000

任何帮助将不胜感激。 谢谢

一种方法是使用printf()

select printf('%d,%02d', cast(col / 100 int), col % 100)

是一个 db<>fiddle。

在更新中,这将是:

update t
    set column = select printf('%d,%02d', cast(column / 100 int), column % 100);

使用函数SUBSTR()

您可以使用以下命令获取最后 2 个字符之前的字符串部分:

SUBSTR([column], 1, LENGTH([column]) -2)

和最后 2 个字符:

SUBSTR([column], -2)

所以更新语句应该是:

UPDATE tablename
SET [column] = SUBSTR([column], 1, LENGTH([column]) -2) || 
               ',' || 
               SUBSTR([column], -2);

如果您有 1 位或 2 位数字的值,并且您希望在 之前有一个前导0 ,则:

UPDATE tablename
SET [column] = CASE WHEN LENGTH([column]) <= 2 THEN '0' ELSE '' END ||
               SUBSTR([column], 1, LENGTH([column]) -2) || 
               ',' || 
               SUBSTR([column], -2); 

请参阅演示

在最后 2 个字符之前获取字符串部分的另一种方法是通过整数除法隐式转换为整数:

UPDATE tablename
SET [column] = ([column] / 100) || ',' || SUBSTR([column], -2);

请参阅演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM