我需要处理旧的设计不佳的数据库
它有如下表格
CREATE TABLE answers (ID INT, ans NVARCHAR(300))
INSERT INTO answers VALUES
(1,'a,b,a,c,d,b,x,x,y'),
(2,'b,b,a,c,d,d,x,x,y'),
(3, 'p,q,r,s,p,q')
我需要有如下结果
id a b c d e
1 2 2 1 1 0
什么是最好的方式?
列是从a到z
答案 0 :(得分:2)
您需要计算每一行的特定字母。这是可能的:
select id,
(len(ans) - len(replace(ans, 'a', ''))) as a,
(len(ans) - len(replace(ans, 'b', ''))) as b,
(len(ans) - len(replace(ans, 'c', ''))) as c,
(len(ans) - len(replace(ans, 'd', ''))) as d,
(len(ans) - len(replace(ans, 'e', ''))) as e
from answers;
计算的计算方法是,取ans
列的长度,然后减去每个字母删除后的长度。