S'il vous plaît aidez-moi - j'ai un problème de comptage combien de 'A' (caractère) il y a dans une rangée et une colonne.
Ceci est ma requête: p>
declare @zz as varchar(10) = '123a123a12' select @zz
3 Réponses :
Une approche Posibe est d'utiliser remplacer () et LEN () Fonctions.:
DECLARE @zz varchar(10) = 'aa3a123a12'
;WITH cte AS (
SELECT 1 AS N
UNION ALL
SELECT N + 1
FROM cte
WHERE N < LEN(@zz)
)
SELECT COUNT(*) AS CharCount
FROM cte
WHERE SUBSTRING(@zz, N, 1) IN ('a', '1')
p>Outpuputa: Une autre approche possible, si vous souhaitez compter plusieurs caractères, est d'utiliser Récursion: P>
CharCount
2
L'ancien tour de l'école ici est de remplacer les 'A avec des espaces vides (' ') et de comparer la longueur de la chaîne résultante à la longueur de l'original:
J'utiliserais La sortie est 3 et 9.
Si @zz est de MSDN: P> La fonction Datallength renvoie le nombre d'octets utilisés pour représenter tout
Expression p>
blockQuote> p> remplacer code> et de la longueur de données code> strong> au lieu de len code>, en raison des espaces de fin pouvant apparaître après remplacer .
Exemple: nvarchar code>, pas varchar code>, vous devrez diviser par 2. P>
Veuillez vous référer à la réponse mise à jour. Cela vous aide à trouver de l'argent à partir d'une piqûre.