久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

是否可以在不循環的情況下比較 T-SQL 中的逗號分

Is it possible to compare comma delimited string in T-SQL without looping?(是否可以在不循環的情況下比較 T-SQL 中的逗號分隔字符串?)
本文介紹了是否可以在不循環的情況下比較 T-SQL 中的逗號分隔字符串?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

假設我有 2 個表,其中都有名為 Brand 的列.該值以逗號分隔,例如,如果表之一具有

Let's say I have 2 tables where both has column called Brand. The value is comma delimited so for example if one of the table has

ACER,ASUS,HP  
AMD,NVIDIA,SONY

作為價值.然后另一個表有

as value. Then the other table has

HP,GIGABYTE  
MICROSOFT  
SAMSUNG,PHILIPS

作為值.

我想比較這些表以獲取所有匹配的記錄,在我的示例中 ACER,ASUS,HPHP,GIGABYTE 匹配,因為兩者都有 HP.現在我正在使用循環來實現這一點,我想知道是否可以在單個查詢語法中做到這一點.

I want to compare these table to get all matched record, in my example ACER,ASUS,HP and HP,GIGABYTE match because both has HP. Right now I'm using loop to achieve this, I'm wondering if it's possible to do this in a single query syntax.

推薦答案

您想擺脫循環是正確的.

You are correct in wanting to step away from the loop.

自從您進入 2012 年以來,String_Split() 不在討論范圍內.然而,有許多分裂/解析 TVF 函數在野中.

Since you are on 2012, String_Split() is off the table. However, there are any number of split/parse TVF functions in-the-wild.

示例 1 - 沒有 TVF

Declare @T1 table (Brand varchar(50))
Insert Into @T1 values 
('ACER,ASUS,HP'),
('AMD,NVIDIA,SONY')

Declare @T2 table (Brand varchar(50))
Insert Into @T2 values 
('HP,GIGABYTE'),
('MICROSOFT'),
('SAMSUNG,PHILIPS')


Select Distinct
       T1_Brand = A.Brand
      ,T2_Brand = B.Brand
 From ( 
        Select Brand,B.*
         From  @T1
         Cross Apply (
                        Select RetVal = LTrim(RTrim(B.i.value('(./text())[1]', 'varchar(max)')))
                        From  (Select x = Cast('<x>' + replace(Brand,',','</x><x>')+'</x>' as xml)) as A 
                        Cross Apply x.nodes('x') AS B(i)
                     ) B
      ) A
 Join ( 
        Select Brand,B.*
         From  @T2
         Cross Apply (
                        Select RetVal = LTrim(RTrim(B.i.value('(./text())[1]', 'varchar(max)')))
                        From  (Select x = Cast('<x>' + replace(Brand,',','</x><x>')+'</x>' as xml)) as A 
                        Cross Apply x.nodes('x') AS B(i)
                     ) B
      ) B
 on A.RetVal=B.RetVal

示例 2 - 使用 TVF

Select Distinct
       T1_Brand = A.Brand
      ,T2_Brand = B.Brand
 From ( 
        Select Brand,B.*
         From  @T1
         Cross Apply [dbo].[tvf-Str-Parse](Brand,',') B
      ) A
 Join ( 
        Select Brand,B.*
         From  @T2
         Cross Apply [dbo].[tvf-Str-Parse](Brand,',') B
      ) B
 on A.RetVal=B.RetVal

兩人都會回來

T1_Brand        T2_Brand
ACER,ASUS,HP    HP,GIGABYTE

感興趣的 UDF

CREATE FUNCTION [dbo].[tvf-Str-Parse] (@String varchar(max),@Delimiter varchar(10))
Returns Table 
As
Return (  
    Select RetSeq = Row_Number() over (Order By (Select null))
          ,RetVal = LTrim(RTrim(B.i.value('(./text())[1]', 'varchar(max)')))
    From  (Select x = Cast('<x>' + replace((Select replace(@String,@Delimiter,'§§Split§§') as [*] For XML Path('')),'§§Split§§','</x><x>')+'</x>' as xml).query('.')) as A 
    Cross Apply x.nodes('x') AS B(i)
);
--Thanks Shnugo for making this XML safe
--Select * from [dbo].[tvf-Str-Parse]('Dog,Cat,House,Car',',')
--Select * from [dbo].[tvf-Str-Parse]('John Cappelletti was here',' ')
--Select * from [dbo].[tvf-Str-Parse]('this,is,<test>,for,< & >',',')

這篇關于是否可以在不循環的情況下比較 T-SQL 中的逗號分隔字符串?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網!

【網站聲明】本站部分內容來源于互聯網,旨在幫助大家更快的解決問題,如果有圖片或者內容侵犯了您的權益,請聯系我們刪除處理,感謝您的支持!

相關文檔推薦

Sql server table usage statistics(Sql server 表使用情況統計)
Relative path in t sql?(t sql中的相對路徑?)
Getting the last record in SQL in WHERE condition(在 WHERE 條件下獲取 SQL 中的最后一條記錄)
Query to get XML output for hierarchical data using FOR XML PATH in SQL Server(在 SQL Server 中使用 FOR XML PATH 查詢以獲取分層數據的 XML 輸出)
T-SQL IF statement embedded in a sum() function(嵌入在 sum() 函數中的 T-SQL IF 語句)
Table vs Temp Table Performance(表與臨時表性能)
主站蜘蛛池模板: 青青青伊人 | 男女啪啪高潮无遮挡免费动态 | 伊人精品在线视频 | 中文字幕91 | 亚洲国产成人精品女人久久久 | 久草免费电影 | 精品久 | 亚洲国产中文在线 | 97碰碰碰 | 日本网站在线看 | 国产福利91精品一区二区三区 | 成人在线中文字幕 | 国产伦精品一区二区三区四区视频 | 美女一级a毛片免费观看97 | 精品久久久久久久久久久院品网 | 一级片在线免费播放 | 日本精品久久久久 | 亚洲精品一区二区三区蜜桃久 | 亚洲男人的天堂网站 | 7777奇米影视 | 中文字幕一区二区三区四区五区 | 中文字幕在线观 | 2018天天干天天操 | 国产美女自拍视频 | 久久久久网站 | 国产精品精品3d动漫 | 亚洲导航深夜福利涩涩屋 | 亚洲精品www久久久 www.蜜桃av | 99久久精品国产毛片 | 中文字幕一区二区三区在线乱码 | 欧美日一区二区 | 黄色一级电影免费观看 | 在线免费看91 | 久久久久久一区 | 亚洲国产精品99久久久久久久久 | 九九精品久久久 | 国产欧美综合在线 | 久综合| 久久国产精品一区二区 | 成人在线视频免费观看 | 日本 欧美 三级 高清 视频 |