gpt4 book ai didi

sql-server-2008 - 从 SQL 表中的一行中删除尾随 ":"字符

转载 作者:行者123 更新时间:2023-12-05 08:16:39 25 4
gpt4 key购买 nike

我有数百万行的表格。对于每一行,都有一个 nvarchar(max) 列。当我填充数据库时,我忘记删除尾随的“:”字符。遍历每一行并删除最后一个字符的最快/最有效的方法是什么?

我想一定有比使用看起来很昂贵的 REPLACE 更快的方法来做到这一点。

这是 SQL Server 2008

最佳答案

您可以使用 STUFF替换字符串部分的函数。在本例中,它是最后一个字符。

UPDATE tbl
SET COL = stuff(COL, len(COL), 1, '')
WHERE COL > ''

或者使用 LEFT,取除最后一个以外的所有。条件 COL > '' 确保 LEFT 具有有效长度。 LEFT 是 SQL Server 中的快捷方式,似乎实现为 SUBSTRING ( 请参阅下文)*

UPDATE tbl
SET COL = LEFT(COL, len(COL) -1)
WHERE COL > ''

如果您同时拥有带尾随分号和不带尾随分号的数据,则可以专门针对它们

UPDATE tbl
SET COL = LEFT(COL, len(COL) -1)
WHERE RIGHT(COL,1) = ':'

这是使用 LEFT 的查询的查询计划(仅显示文本计划的前 3 行)

select LEFT(text, LEN(text)-1), * from master..syscomments
  |--Compute Scalar(DEFINE:([Expr1061]=substring([Union1060],(1),len([Union1060])-(1))))
|--Concatenation
|--Compute Scalar(DEFINE:([Expr1005]=(0), [Expr1007]=(0)))

关于sql-server-2008 - 从 SQL 表中的一行中删除尾随 ":"字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4742444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com