我有问题,我必须更改列中所有现有的13位数值,使其为15位数。例如:
0101001000612
这是我已经存在的数据,我想在612之前再添加两个0并进行制作:
010100100000612
我在某个地方找到了以下查询,但是它在最后添加数据而不是在最后三个字符之前:
update loc_state_journal
set state_journal_id = state_journal_id + '00'
答案 0 :(得分:0)
试试这个:
如果列类型为VARCHAR
,则:
UPDATE loc_state_journal
SET state_journal_id = STUFF(state_journal_id,LEN(state_journal_id )-2,0,'00')
如果您的列为BIGINT
,那么:
UPDATE loc_state_journal
SET state_journal_id = cast(stuff(cast(state_journal_id as varchar(15)),LEN(CAST(state_journal_id as VARCHAR(15)))-2,0,'00') as bigint)
答案 1 :(得分:0)
根据您的问题和您的尝试,您可以获得相同形式和长度的所有数据。如果是这样,并使用SQL Server,那么你可以使用STUFF实现如下:
UPDATE loc_state_journal
SET state_journal_id = STUFF(state_journal_id,10,0,'00')
答案 2 :(得分:0)
在下面的计算中,我已经包含了如何找到查询的第一部分和最后部分,这些计算在结果中使用;
DECLARE @MyVariable varchar(20) = '010100100000612'
SELECT
@MyVariable MyVariable
,SUBSTRING(@MyVariable,1,LEN(@MyVariable)-3) FirstPart
,SUBSTRING(@MyVariable,LEN(@MyVariable)-2,3) FinalPart
,SUBSTRING(@MyVariable,1,LEN(@MyVariable)-3) + '00' + SUBSTRING(@MyVariable,LEN(@MyVariable)-2,3) Result
输出
MyVariable FirstPart FinalPart Result
010100100000612 010100100000 612 01010010000000612
答案 3 :(得分:0)
如果<li>
是文本类型的数据(state_journal_id
等),则需要使用CHAR, VARCHAR
函数(如果是Oracle,否则等效函数)将当前数据剪切为第一个10个字符和最后3个字符,并在其间附加两个substring
。
例如:
00
如果state_journal_id是数字类型(UPDATE loc_state_journal
SET state_journal_id = SUBSTR(state_journal_id,0,9) ||'00'||SUBSTR(state_journal_id,10,3)
等),那么您可以使用数学函数来实现所需的结果。
以下示例适用于Oracle。你也可以在其他数据库中使用适合MOD的功能。
integer, float