SQL Server從由逗號(hào)分隔的字符串中提取某些值

我的列是一個(gè)由逗號(hào)分隔的值字符串(沒有特定順序):

event_list

2,100,101,102,103,104,105,106,110,114,121,126,152,185,191,524,150,198,158,111,20
100,101,102,103,104,110,114,121,126,152,175,185,191,150,198,158,111,123,10091

在這些值中,我只對(duì)1、2、10、11、12、13、14和20感興趣。其余的都無關(guān)緊要。例如2-“產(chǎn)品視圖”和12-“添加到購物車”。

所以我想做一些

CASE WHEN 2 IN event_list THEN 1 ELSE 0 END as product_view flag,
CASE WHEN 12 IN event_list THEN 1 ELSE 0 END as add_to_cart_flag
...

但由于它是SQL而不是Python,我認(rèn)為上面的方法是不可能的,因此我試圖找出如何做到這一點(diǎn)。我認(rèn)為使用regex不會(huì)有什么幫助,因?yàn)椤?20”也會(huì)包含“2”。

STRING_SPLIT不是最佳解決方案,因?yàn)閿?shù)據(jù)已經(jīng)是900Bil行。

? 最佳回答:

有幾種方法

SELECT *
FROM YourTable yt
CROSS APPLY
(
SELECT 
        MAX(CASE WHEN value = '2' THEN 1 ELSE 0 END)  as product_view_flag,
        MAX(CASE WHEN value = '12' THEN 1 ELSE 0 END)  as add_to_cart_flag
FROM STRING_SPLIT(yt.event_list, ',')
) ca

or

SELECT yt.*, 
            CASE WHEN adj_event_list LIKE '%,2,%' THEN 1 ELSE 0 END as product_view_flag, 
            CASE WHEN adj_event_list LIKE '%,12,%' THEN 1 ELSE 0 END as add_to_cart_flag
FROM YourTable yt
CROSS APPLY (SELECT CONCAT(',',yt.event_list,',')) CA(adj_event_list)

如果您實(shí)際在900Bil行上運(yùn)行此操作,那么這兩個(gè)行都會(huì)很慢。我猜不出哪一個(gè)會(huì)“贏”——你需要同時(shí)測(cè)試這兩個(gè)。

主站蜘蛛池模板: 亚洲综合一区二区| 色综合视频一区中文字幕| 亚洲精品一区二区三区四区乱码| 国产欧美一区二区精品仙草咪| 国产精品成人一区二区三区| 无码人妻精品一区二区三区99仓本| 无码丰满熟妇浪潮一区二区AV| 中文字幕在线精品视频入口一区| 无码av人妻一区二区三区四区| 亚州国产AV一区二区三区伊在| 午夜性色一区二区三区免费不卡视频 | 性色av闺蜜一区二区三区| 国产成人无码一区二区三区在线| 91久久精品无码一区二区毛片| 一区二区三区四区在线播放| 色婷婷亚洲一区二区三区| 久久人妻无码一区二区| 亚洲熟妇AV一区二区三区浪潮 | 国产精品揄拍一区二区| 美女福利视频一区| 国产精品一区二区久久不卡| 一区二区三区波多野结衣| 国产精品综合一区二区| 后入内射国产一区二区| 日韩精品一区二区三区不卡 | 日本一区中文字幕日本一二三区视频 | 中文字幕亚洲一区| 亚洲男人的天堂一区二区| 天天看高清无码一区二区三区| 人妖在线精品一区二区三区| 国产经典一区二区三区蜜芽| 中文字幕一区二区三区久久网站 | 韩国一区二区三区视频| 国产在线一区观看| 人妻无码一区二区视频| 国产日韩AV免费无码一区二区| 国产一区二区三区免费看| 成人国产精品一区二区网站| 国产人妖视频一区二区| 中文字幕日韩丝袜一区| 国产一区二区在线|