所以我有两列。一个包含前缀(nvarchar),而下一个包含nvarchar我希望从中删除所述前缀,我们将命名列为'words'。通常情况下right(words, len(words) - len(prefix)
会得到答案。但是,假设单词的开头有两个空格,前缀是单个空格。所以我试图从单词的开头删除一个空格。 len(前缀)将返回0. datalength(前缀)将返回1但是由于某些字符占用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(前缀))其他单词结束时的情况
这可以确保前缀从单词的开头开始,而不是单词的中间或任何地方。