代码之家  ›  专栏  ›  技术社区  ›  John

SQL子字符串与右字符串-最佳实践

  •  24
  • John  · 技术社区  · 15 年前

    我试图找出从字符串开头删除字符时的最佳实践。

    在某些语言中,您可以使用不带长度参数的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)
    
    4 回复  |  直到 15 年前
        1
  •  21
  •   Marc Gravell    15 年前

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

    当然,如果你做了这么多,你可以写一个封装这个的UDF——如果你改变主意,你只有一个地方可以改变……

        2
  •  5
  •   SQLMenace    15 年前

    +1在正确的功能上,你想做什么就更清楚了。

        3
  •  4
  •   Andrew Hare    15 年前

    我会用 right 它能更好地显示你的意图。这个 substring 函数最好用于从较长字符串的中间提取字符串。

        4
  •  2
  •   Yada    15 年前

    我使用第二个子字符串是因为它更易于移植。不是所有的DBMS都有左右。