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

J'ai cette chaîne et j'ai besoin de compter le nombre de guid disponible qui est trois.Comment obtenir le nombre de guid disponibles à partir d'une chaîne de GUID

Comment puis-je l'obtenir dans une variable Integer?

Quelque chose comme ça?

select @i = count(@stringOfGuids) 

mais il retourne 1, je besoin de trois GUIDs comme disponibles sont 3.

+0

une façon est de compter le nombre de "caractères dans la chaîne, puis le diviser par 2 – Cato

Répondre

1
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; 
+0

thnx andrew, un autre bon moyen de l'obtenir, thnx beaucoup – Rajesh

4

Comptez le nombre de virgules et ajoutez 1.

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

Le comptage est from this answer.

+0

qui est génial! Il pourrait vouloir compter les citations de cette façon que, cos il a deux points à la fin, je pense - oh ouais désolé, ajouter 1 – Cato

+0

oui, excellent Marko, il a travaillé pour moi ,, thnx beaucoup .. bonne solution décente .. – Rajesh