在SQL Server中,给定一个字符串,是否存在已建立的,规范的"最佳"从特定索引开始获取子串的方法,并继续到字符串的结尾?
"最佳"这里意味着以下考虑因素的平衡:
我遇到过这样做的方法,在这些示例中使用2
作为启动子字符串的索引:
SUBSTRING(mystring, 2, 1000000)
1000000
(可能是任何"足够大"值)似乎并不理想。
SUBSTRING(mystring, 2, 2147483647)
varchar(max)
或nvarchar(max)
,string length might possibly exceed that size,具体取决于SQL Server版本?
SUBSTRING(mystring, 2, LEN(mystring) - 2 + 1)
RIGHT(mystring, LEN(mystring) - 2 + 1)
SUBSTRING(mystring, 2, LEN(mystring))
考虑到我上面提到的考虑因素(性能,可读性,易用性),是否有更好的通用解决方案?
答案 0 :(得分:1)
SUBSTRING(mystring, 2, LEN(mystring) - 2 + 1)
这肯定是我的首选方式。即使"规范"你可以在SUBSTRING()函数中超出字符串长度的范围,最好不要。如果您担心语法混淆,只需在行前面加上注释解释。事实上,我可能会先用注释来解释这种操作,以解释为什么我使用子字符串以及我期望子字符串由
组成答案 1 :(得分:1)
正如我在评论中提到的,您可以使用的另一个选项是
STUFF(mystring, 1,2,'')
对于开发人员而言,这应该易于理解和记忆。