繁体   English   中英

删除sql server表中一列中的前导零,

[英]Remove Leading Zeros in a column in a sql server table,

我的问题与此非常相似:

SE问题

但是我想在一个表上运行查询,并实际上更新该表中的值,而不仅仅是选择它们。

我不确定如何选择一个值,然后在不使用for循环的情况下更新它。

我可以运行哪个查询来执行此操作?

{编辑:}

我将数字值存储为varchar并进行导入,我运行了导入的数字,例如00233,我希望它是233

因此,调整查询以进行update

update table t
    set ColumnName =  substring(ColumnName, patindex('%[^0]%', ColumnName), 10);

您的问题有点含糊,因为您无需详细说明为什么要先选择SELECT然后再进行UPDATE,因此,此答案可能对您没有用。 然而..

在UPDATE语句中,您可以基于列值设置列值。 我的意思是,如果您在ColA中有“ 00001A”并希望它是“ 1A”,则可以(主要从链接的问题中获取答案)

UPDATE MyTable SET ColA =  substring(ColA, patindex('%[^0]%',ColA), 10)

第一次通过此代码会将任何出现的00001A更改为1A,随后的运行将与PATINDEX不匹配,因此请忽略该值。

如果这不是您要解决的问题,请进一步回答该问题,希望您会获得更多帮助。

如果所有列都是数字,请使用以下命令:

UPDATE table
SET col =  cast(cast(col as int) as varchar(10))
WHERE col like '0%'

如果某些值不是数字

UPDATE table
SET col = stuff(@a, 1, patindex('%[^0]%', @a) - 1, '')
WHERE col like '0%'

暂无
暂无

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

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