[英]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.