SQL Server 2008 R2:计数字符匹配
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL Server 2008 R2:计数字符匹配相关的知识,希望对你有一定的参考价值。
以下是计算事件的给定模式。
DECLARE @Pattern VARCHAR(20) = ' ??? ? ?? '
想要计算?
的出现次数。
预计数:6
我的尝试:1
SET @Pattern = LEN(@Pattern) - LEN(REPLACE(@Pattern,'?',''));
PRINT(@Pattern)
结果:9
我的尝试:2
SET @Pattern = LEN(LTRIM(RTRIM(@SDPattern)));
PRINT(@Pattern)
结果:8
答案
你的第一个查询几乎是对的。 LEN
不计算尾随空格。所以在这种情况下你应该使用datalength
DECLARE @Pattern VARCHAR(20) = ' ??? ? ?? '
SET @Pattern = DATALENGTH(@Pattern) - DATALENGTH(REPLACE(@Pattern,'?',''));
另一答案
len()
函数忽略尾随空格。为了测量字符串的实际长度,您需要使用datalength()
函数。
但是,请注意它计算字节而不是字符。因此,例如,这将为您提供两倍的预期:
declare @v nvarchar(20) = N'we?i?gf 349?08 d ? ';
select datalength(@v) - datalength(replace(@v, N'?', N''));
以上是关于SQL Server 2008 R2:计数字符匹配的主要内容,如果未能解决你的问题,请参考以下文章
根据 SQL Server 2008R2 中表中的列获取计数
如何在 Sql Server 2008 R2 存储过程中搜索字符串?
拆分字符串并为 SQL Server 2008 R2 中表中的所有记录填充表