删除SQL中字符串的前缀

时间:2013-10-09 18:31:42

标签: sql sql-server tsql

所以我有两列。一个包含前缀(nvarchar),而下一个包含nvarchar我希望从中删除所述前缀,我们将命名列为'words'。通常情况下right(words, len(words) - len(prefix)会得到答案。但是,假设单词的开头有两个空格,前缀是单个空格。所以我试图从单词的开头删除一个空格。 len(前缀)将返回0. datalength(前缀)将返回1但是由于某些字符占用2个字节,我不相信数据长度是答案。

2 个答案:

答案 0 :(得分:6)

试试这个:

RIGHT(words, LEN(words) - (LEN(prefix+'?')-1))

已编辑:

可能你会发现这个“更干净”:

RIGHT(words, LEN(words) - DATALENGTH(CONVERT(VARCHAR(100),prefix)))

答案 1 :(得分:0)

当CHARINDEX(前缀,单词)= 1 THEN RIGHT(单词,LEN(单词)-LEN(前缀))其他单词结束时的情况

这可以确保前缀从单词的开头开始,而不是单词的中间或任何地方。