回答

收藏

SQL SUBSTRING与RIGHT-最佳实践

技术问答 技术问答 250 人阅读 | 0 人回复 | 2023-09-14

我正在尝试从字符串开头删除字符时找出最佳实践。
8 L! B- ?5 Q3 A# D7 G在某些语言中,可以使用不带长度参数的MID,但是在TSQL中,长度是必需的。6 X, A: [  Z8 X/ D+ s
考虑以下代码,最佳实践是什么?(十六进制字符串是可变长度的)
( O/ l: O5 H; c5 ?" bDECLARE @sHex VARCHAR(66)
" m5 j# j  S8 ^( YSET @sHex = '0x7E260F3DA734AD4BD816B88F485CE501D843DF067C8EDCB8AC7DAD331852E04D'
- @/ g! v7 d  kPRINT RIGHT(@sHex,LEN(@sHex) -2)
" y$ ]# j! s. |9 U0 s/ pPRINT SUBSTRING(@sHex,3,LEN(@sHex) -2)" z! k7 g- N: I( G5 _2 F  W  O
PRINT SUBSTRING(@sHex,3,65535)2 X! P& h1 H  o
               
5 R% t0 v2 `! I6 f7 L) f4 T解决方案:
* q* S- M) {5 g+ B4 P               
" m- I2 x: g* x( [
/ S) \# N( i( \
" T8 i0 v: C( V& j% O$ u                好吧,第一个更能表达您的意图。最后一个显然是凌乱的(硬编码长度等)。我怀疑您会发现第一个和第二个之间的性能差异很大,所以我会使用最简单的- RIGHT。
/ `- c7 V. W) h6 b2 \当然,如果您要做的很多,您可以编写一个封装了此内容的udf-然后,如果您改变主意,则只有一个地方可以更改…
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则