我的问题与此非常相似:
但是我想在表上运行查询,并实际更新该表中的值,而不仅仅是选择它们。
我不确定如何选择值,然后在不使用for循环的情况下更新它。
我可以运行什么查询来执行此操作?
{编辑:}
我将数字值存储为varchar,导入我运行导入的数字,如00233 我希望它是233
答案 0 :(得分:2)
因此,请调整update
的查询:
update table t
set ColumnName = substring(ColumnName, patindex('%[^0]%', ColumnName), 10);
答案 1 :(得分:1)
你的问题有点模糊,因为你没有详细说明为什么要选择然后更新,因为这个答案可能对你没用。然而..
在UPDATE语句中,您可以根据列值设置列值。我的意思是,如果你有" 00001A"在ColA,并希望它是" 1A"你可以(主要是从链接问题中回答)
UPDATE MyTable SET ColA = substring(ColA, patindex('%[^0]%',ColA), 10)
首次通过此代码会将00001A的任何出现更改为1A,并且后续运行它不会与PATINDEX匹配,因此请忽略该值。
如果这不是您所追求的目标,请更多地扩展问题,希望您能获得更多帮助。
答案 2 :(得分:1)
如果所有列都是数字,请使用:
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%'