SQL:如何统计一个字符串中每个元音的个数

问题描述:

首先,我是一个SQL初学者。SQL:如何统计一个字符串中每个元音的个数

我有一个名为State在表如下图所示

State 
Karnataka 
Uttar Pradesh 
Tamilnadu 
Telangana 
Kerela 
Andhra Pradesh 

我想知道有多少元音存在于每个状态和结果应该是单独为每个元音在那里我有数据列。

预期输出:

State   Count of a Count of e Count of i Count of o Count of u 
Karnataka  4   0   0   0   0 
Uttar Pradesh 2   1   0   0   1 
+1

这确实闻起来像一门功课。下次至少要先尝试一些事情,否则你永远不会学习。 –

+0

@JuanCarlosOropeza,当然!谢谢 – lohith

+1

事实上,它是学术而不是就业与我们中的一些人无关。这是一个很难回答的问题,所以如果它是作业,就选择一个具有挑战性的课程表示赞赏。然而,如果你先尝试自己的事情,你会从中获得更多。 –

请尝试以下SQL:

SELECT 
State, 
LEN(state)-LEN(REPLACE(state,'a','')) 'Count of a', 
LEN(state)-LEN(REPLACE(state,'e','')) 'Count of e', 
LEN(state)-LEN(REPLACE(state,'i','')) 'Count of i', 
LEN(state)-LEN(REPLACE(state,'o','')) 'Count of o', 
LEN(state)-LEN(REPLACE(state,'u','')) 'Count of u' 
FROM TableName 

使用PIVOT:

CREATE TABLE #TEST ([STATE] NVARCHAR(MAX)) 

INSERT INTO #TEST VALUES ('Karnataka' ) 
INSERT INTO #TEST VALUES ('Uttar Pradesh') 
INSERT INTO #TEST VALUES ('Tamilnadu' ) 
INSERT INTO #TEST VALUES ('Telangana' ) 
INSERT INTO #TEST VALUES ('Kerela'  ) 
INSERT INTO #TEST VALUES ('Andhra Pradesh') 

SELECT * 
FROM 
(
SELECT [STATE], N, LEN([STATE]) - LEN(REPLACE([STATE], N,'')) AS VOWELCOUNT 
FROM #TEST 
CROSS JOIN (VALUES('A'),('E'),('I'),('O'),('U')) AS A(N) 
) PVT 
PIVOT (MAX(VOWELCOUNT) FOR N IN ([A],[E],[I],[O],[U])) AS D