【问题标题】:Delete last N characters from field in a SQL Server database从 SQL Server 数据库中的字段中删除最后 N 个字符
【发布时间】:2021-04-03 03:29:10
【问题描述】:

我有超过 400 万行的表,但意外在一列中的数据超出了需要。

例如,ABC DEFG 不是 ABC

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

【问题讨论】:

    标签: sql-server


    【解决方案1】:
    UPDATE mytable SET column=LEFT(column, LEN(column)-5)
    

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

    【讨论】:

    • 当我根据您的回答使用多个更新语句时。它适用于第一个更新语句,对于其他我得到错误:传递给 LEFT 或 SUBSTRING 函数的长度参数无效。请帮忙
    • @NikhilPatel UPDATE mytable SET column=LEFT(column, LEN(column)-5) and LEN(column) > 5
    • 此解决方案适用于column 中有超过 4 个字符的特殊情况(OP 就是这种情况),否则会失败。
    • 不完全是我在做什么,但这帮助我建立了我的逻辑。谢谢一百万。
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

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

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

      【讨论】:

        【解决方案4】:

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

        lEFT(columnX,LEN(columnX) - 1) AS NewColumnName
        

        【讨论】:

          【解决方案5】:

          您可以使用函数 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"
          

          【讨论】:

            猜你喜欢
            • 2011-05-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2018-12-03
            • 2013-06-05
            • 2015-02-23
            • 2014-11-08
            • 2014-12-15
            相关资源
            最近更新 更多