【问题标题】:SQL SUBSTRING vs RIGHT - Best PracticeSQL SUBSTRING vs RIGHT - 最佳实践
【发布时间】:2010-10-04 22:50:30
【问题描述】:

我正在尝试找出从字符串开头删除字符时的最佳做法。

在某些语言中,您可以使用不带长度参数的 MID,但在 TSQL 中,长度是必需的。

考虑以下代码,最佳做法是什么? (十六进制字符串是可变长度的)

DECLARE @sHex VARCHAR(66)
SET @sHex = '0x7E260F3DA734AD4BD816B88F485CE501D843DF067C8EDCB8AC7DAD331852E04D'

PRINT RIGHT(@sHex,LEN(@sHex) -2)
PRINT SUBSTRING(@sHex,3,LEN(@sHex) -2)
PRINT SUBSTRING(@sHex,3,65535)

【问题讨论】:

    标签: sql tsql string


    【解决方案1】:

    嗯,第一个更能表达你的意图。最后一个显然是混乱的(硬编码长度等)。我怀疑你会发现第一个和第二个之间的性能差异很大,所以我会使用最简单的 - RIGHT

    当然,如果你经常做这些,你可以写一个 udf 来封装它——那么如果你改变主意,你只有一个地方可以改变......

    【讨论】:

      【解决方案2】:

      我会使用right 函数,因为它可以更好地显示您的意图。 substring 函数最适合用于从较长字符串的中间提取字符串。

      【讨论】:

        【解决方案3】:

        +1 右边的功能,你想做什么就更清楚了

        【讨论】:

          【解决方案4】:

          我使用第二个 SUBSTRING,因为它更便携。并非所有 dbms 都有 LEFT 和 RIGHT。

          【讨论】:

          • 这是您从一个数据库迁移到另一个数据库时遇到的最小问题... :)
          猜你喜欢
          • 1970-01-01
          • 2023-03-04
          • 2011-05-12
          • 1970-01-01
          • 2011-03-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-01-27
          相关资源
          最近更新 更多