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 中表中的列获取计数

sqlserver2008r2clr应用签名不匹配

如何在 Sql Server 2008 R2 存储过程中搜索字符串?

拆分字符串并为 SQL Server 2008 R2 中表中的所有记录填充表

EF Code First CTP 5 和 SQL SErver 2008 R2

windows 2012 r2怎么安装sql server 2008 r2