37

我有超过 400 万行的表,并且意外地在一列中的数据比需要的多。

例如,而ABC不是ABC DEFG.

如何使用 TSQL 删除这 N 个符号?请注意,我想从数据库中删除这些字符,而不仅仅是选择子字符串。谢谢

4

5 回答 5

86
UPDATE mytable SET column=LEFT(column, LEN(column)-5)

从列中删除最后 5 个字符(mytable 中的每一行)

于 2012-05-06T12:29:54.097 回答
13

我得到了自己问题的答案,这是:

select reverse(stuff(reverse('a,b,c,d,'), 1, N, ''))

其中 N 是要删除的字符数。这避免了两次写入复杂的列/字符串

于 2013-07-18T21:15:46.623 回答
2

你可以使用SUBSTRING()函数来做到这一点:

UPDATE table SET column = SUBSTRING(column, 0, LEN(column) + 1 - N)

删除列中每一行的最后 N 个字符

于 2014-10-15T12:42:05.440 回答
0

这应该做到这一点,从左边删除一个或多个需要的字符。

lEFT(columnX,LEN(columnX) - 1) AS NewColumnName
于 2016-06-16T18:52:02.463 回答
-1

You can use function RIGHT [https://www.w3schools.com/sql/func_sqlserver_right.asp]

RIGHT( "string" , number_of_chars_from_right_to_left)

That should look like this:

Query: SELECT RIGHT('SQL Tutorial', 3) AS ExtractString;
Result: "ial"
于 2021-04-02T19:29:10.640 回答