Ale*_*bak 10 t-sql sql-server string
我们遇到了一个非常奇怪的问题(这种成熟产品真的很奇怪):如何使用Transact-SQL语句获取Unicode字符串中的字符数.这个问题的关键问题是len()TSQL函数返回字符数,不包括尾随空格.另一种变体是使用datalength(返回字节数)并除以2,因此获取Unicode字符的数量.但Unicode字符可以是代理对,所以它也不起作用.
我们有两种解决方案:第一种是使用len(replace()),第二种是添加单个符号,然后从结果中减去1.但IMO这两种变体都相当难看.
declare @txt nvarchar(10)
set @txt = 'stack '
select @txt as variable,
len(@txt) as lenBehaviour,
DATALENGTH(@txt)/2 as datalengthBehaviour,
len(replace(@txt,' ','O')) as ReplaceBehaviour,
len(@txt+'.')-1 as addAndMinusBehaviour
Run Code Online (Sandbox Code Playgroud)
任何其他想法如何计算字符串中的字符与尾随空格?
我不能发表评论所以我将不得不留下答案(或关闭).
我的投票将是addAndMinusBehaviour
我没有一个好的第三种选择,在选项/ SET/Collation任务中可能有一些模糊的空格规则,但是我不知道更多细节.
但是真正的addAndMinusBehaviour可能是最容易实现的,执行速度最快,如果你记录它,也可以很好地维护.