【问题标题】:How to get count of available guid from a comma separated string of guid如何从逗号分隔的 guid 字符串中获取可用 guid 的计数
【发布时间】:2016-12-01 04:03:19
【问题描述】:
Declare @i int;
declare @stringOfGuids nvarchar(max)='''70173C2D-0B8E-4043-BD14-665D5DCCF112'',''B0B7445C-DF50-4D49-BD4E-B74958FB0618''
,''70173C2D-0B8E-4043-BD14-665D5DCCF112''';

我有这个字符串,我需要计算可用 guid 的数量,即三个。

如何在整数变量中获取它?

这样的?

select @i = count(@stringOfGuids)

但它返回 1,我需要三个,因为可用的 guid 是 3。

【问题讨论】:

  • 一种方法是统计字符串中 " 字符的个数,然后除以 2

标签: sql-server sql-server-2008 tsql sql-server-2005 sql-server-2012


【解决方案1】:

数逗号的个数加1。

SELECT Len(@stringOfGuids ) - Len(Replace( @stringOfGuids , ',', '')) + 1

计数是from this answer

【讨论】:

  • 这太巧妙了!不过,他可能想这样计算引号,因为我认为他最后有一个冒号 - 哦,是的,抱歉,加 1
  • 是的,出色的 Marko,它对我有用 ,, thnx alot..good 体面的解决方案..
【解决方案2】:
Declare @i int;

declare @stringOfGuids nvarchar(max)='''70173C2D-0B8E-4043-BD14-665D5DCCF112'',''B0B7445C-DF50-4D49-BD4E-B74958FB0618'' ,''70173C2D-0B8E-4043-BD14-665D5DCCF112''';

declare @cnt int = 0;
declare @pos int = 1;

while charindex('''', @stringOfGuids, @pos) > 0
    SELECT @pos =  charindex('''', @stringOfGuids, @pos) + 1, @CNT = @CNT + 1;



SELECT @CNT / 2;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-07
    • 2015-02-08
    • 2012-05-19
    • 1970-01-01
    • 1970-01-01
    • 2013-06-24
    • 2019-05-08
    • 2017-06-06
    相关资源
    最近更新 更多