表Vehicle的示例数据

ID     BODY TYPE        Litre
1      AAA              1.5
2      BBB; CCC         1.9
3      DDD              1.9
4      EEE; FFF; GGG    1.8
5      GGG              1.8

我需要一个Select Distinct语句,该语句将把以下结果带入查询,因此我们在选择所有唯一值的同时还要按分割;也一样
BODY TYPE
AAA
BBB
CCC
DDD
EEE
FFF
GGG

我看过类似的问题,其中包含各种功能,但我希望结果可以显示为查询。我已尝试根据我的情况调整以下建议

最佳答案

您实际上应该以规范化形式存储数据。也就是说,试试这个

;with c as (
    select bodytype, 0 as start, CHARINDEX(';', bodytype) as sep
    from Vehicle
    where litre=1.9
    union all
    select bodytype, sep, CHARINDEX(';', bodytype, sep+1) from c
    where sep>0

)
    select distinct LTRIM(RTRIM(SUBSTRING(bodytype,start+1,chars))) as [BodyType]
    from
    (
        select *, Case sep when 0 then LEN(bodytype) else sep-start-1 end as chars
        from c
    ) v

关于sql - SQL选择不同,但包含单独的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18249363/

10-11 08:15