首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL:只对字符大小不同的类别自动进行数据提取。

SQL:只对字符大小不同的类别自动进行数据提取。
EN

Stack Overflow用户
提问于 2017-10-31 23:51:20
回答 2查看 33关注 0票数 0

我希望从下面的数据集中获得以下结果。我尝试使用左函数,但由于每行字符数不同,它将无法工作。我有741行像这样,但我只需要行只有类别,子类别是不需要的。

  • 就餐->早餐
  • 就餐->休闲餐厅
  • 娱乐->电影院
  • 娱乐->专业体育场馆

数据集:

就餐->早餐

餐厅->早餐->休闲餐厅

餐厅->早餐->QSR_

Dining->Breakfast->QSR_Restaurants->Chick_Fil_A

就餐->休闲餐厅

就餐->休闲餐厅只限于PIQonly

就餐->休闲餐厅->苹果蜜蜂

娱乐->电影院

娱乐->电影院->AMC_剧院

娱乐->电影院->卡米克电影院

娱乐->专业体育场馆

Entertainment->Professional_Sports_Venues->MLB_Stadiums

Entertainment->Professional_Sports_Venues->MLS_Stadiums

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-01 01:02:04

一种方法是从您的结果中排除2级以上的所有记录:

代码语言:javascript
复制
create table #a (cat varchar(500))

insert into #a (cat)
    values  ('Dining->Breakfast')
            ,('Dining->Breakfast->Casual_Restaurants')
            ,('Dining->Breakfast->QSR_Restaurants')
            ,('Dining->Breakfast->QSR_Restaurants->Chick_Fil_A')
            ,('Dining->Casual_Restaurants')
            ,('Dining->Casual_Restaurants_PIQonly')
            ,('Dining->Casual_Restaurants->Applebees')
            ,('Entertainment->Movie_Theaters')
            ,('Entertainment->Movie_Theaters->AMC_Theaters')
            ,('Entertainment->Movie_Theaters->Carmike_Cinema')
            ,('Entertainment->Professional_Sports_Venues')
            ,('Entertainment->Professional_Sports_Venues->MLB_Stadiums')
            ,('Entertainment->Professional_Sports_Venues->MLS_Stadiums')

SELECT  cat
FROM    #a
WHERE   cat NOT LIKE '%->%->%'

在上面的查询中,我们使用一个类似的模式来排除超过2个级别的记录(通过让->在列表中出现两次来标识)。

票数 1
EN

Stack Overflow用户

发布于 2017-11-01 00:55:25

下面的示例代码使用CharIndex查找字符串中第二个'->‘的开始。为了确保始终有第二个'->‘’,它将其附加到字符串的末尾.

这个逻辑确实假定所有类别至少包含两个级别。如果没有,则需要调整逻辑(可能使用case语句来测试有多少级别)。

代码语言:javascript
复制
DECLARE @val varchar(200) = 'Dining->Breakfast->QSR_Restaurants->Chick_Fil_A'
SELECT LEFT(@val+'->', CHARINDEX('->', @val+'->', CHARINDEX('->', @val+'->', 0) + 2)-1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47046184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档