【发布时间】:2021-04-03 03:29:10
【问题描述】:
我有超过 400 万行的表,但意外在一列中的数据超出了需要。
例如,ABC DEFG 不是 ABC。
如何使用 TSQL 删除这 N 个符号?请注意,我想从数据库中删除这些字符,而不仅仅是选择子字符串。谢谢
【问题讨论】:
标签: sql-server
我有超过 400 万行的表,但意外在一列中的数据超出了需要。
例如,ABC DEFG 不是 ABC。
如何使用 TSQL 删除这 N 个符号?请注意,我想从数据库中删除这些字符,而不仅仅是选择子字符串。谢谢
【问题讨论】:
标签: sql-server
UPDATE mytable SET column=LEFT(column, LEN(column)-5)
从列中删除最后 5 个字符(mytable 中的每一行)
【讨论】:
column 中有超过 4 个字符的特殊情况(OP 就是这种情况),否则会失败。
我得到了我自己问题的答案,这是:
select reverse(stuff(reverse('a,b,c,d,'), 1, N, ''))
其中 N 是要删除的字符数。这避免了两次写入复杂的列/字符串
【讨论】:
您可以使用SUBSTRING() 函数来做到这一点:
UPDATE table SET column = SUBSTRING(column, 0, LEN(column) + 1 - N)
删除列中每一行的最后 N 个字符
【讨论】:
应该这样做,从左边删除一个或多个需要的字符。
lEFT(columnX,LEN(columnX) - 1) AS NewColumnName
【讨论】:
您可以使用函数 RIGHT [https://www.w3schools.com/sql/func_sqlserver_right.asp]
RIGHT(“字符串”, number_of_chars_from_right_to_left)
应该是这样的:
Query: SELECT RIGHT('SQL Tutorial', 3) AS ExtractString;
Result: "ial"
【讨论】: