修改SQL中的所有行和中间的一些数据
我有一个问题,我必须更改列中所有现有的13位值,使其成为15位。例如:修改SQL中的所有行和中间的一些数据,sql,Sql,我有一个问题,我必须更改列中所有现有的13位值,使其成为15位。例如: 0101001000612 这是我已经存在的数据,我想在612之前再添加两个0并使其: 010100100000612 我在某个地方找到了下面的查询,但它将数据附加在末尾,而不是最后三个字符之前: update loc_state_journal set state_journal_id = state_journal_id + '00' 试试这个: 如果列类型为VARCHAR,则: UPDATE loc_stat
0101001000612
这是我已经存在的数据,我想在612之前再添加两个0并使其:
010100100000612
我在某个地方找到了下面的查询,但它将数据附加在末尾,而不是最后三个字符之前:
update loc_state_journal
set state_journal_id = state_journal_id + '00'
试试这个: 如果列类型为
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)
根据您的问题和您的尝试,您拥有相同形式和长度的所有数据。如果是这样,那么使用SQL Server,您可以通过以下方式实现:
UPDATE loc_state_journal
SET state_journal_id = STUFF(state_journal_id,10,0,'00')
在下面的计算中,我已经包括了如何找到查询的第一部分和最后一部分,这些计算将用于结果中
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
如果
state\u journal\u id
是数据的文本类型(CHAR,VARCHAR
等),那么您需要使用子字符串
函数(如果是Oracle,则为等效函数)将当前数据剪切为前10个字符和后3个字符,并在中间添加两个00
例:
如果state\u journal\u id是数字类型(integer、float
等),则可以使用数学函数来实现所需的结果
下面的例子是针对Oracle的。您也可以在其他数据库中使用适当的MOD函数
UPDATE loc_state_journal
SET state_journal_id = (state_journal_id - MOD(state_journal_id,1000))*100 + MOD(state_journal_id,1000)
您使用的是哪种数据库管理系统?(有些产品有自己的字符串处理函数,而不是ANSI SQL。)列数据类型?是否先要现有的10个字符,然后是00,最后是3个字符?为什么不将其存储为
int
并将其转换为(格式化)无论您需要在哪里显示字符串?所有现有数据是否默认为13位,或者可能会更改…?@puneetaroraloc\u state\u journal
的数据类型是什么?非常优雅的解决方案
UPDATE loc_state_journal
SET state_journal_id = (state_journal_id - MOD(state_journal_id,1000))*100 + MOD(state_journal_id,1000)