久久久久久久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(表與臨時表性能)
主站蜘蛛池模板: 国产伦精品 | 中文字幕a√ | www久久久 | 亚洲精品中文字幕中文字幕 | 国产一区二区免费在线 | 日日夜夜精品视频 | 成人一区在线观看 | 日本三级视频 | 黄色毛片在线播放 | 中文字幕在线三区 | 一区二区三区四区在线视频 | 99精品在线| 欧洲视频一区 | 波多野结衣一区二区三区 | 久草免费电影 | 成人a视频在线观看 | 日韩 国产 在线 | 欧美日韩一区二区视频在线观看 | 女同av亚洲女人天堂 | 男人的天堂在线视频 | 1级黄色大片 | 欧美激情视频一区二区三区免费 | 91精品国产一区二区三区动漫 | 日韩欧美一区二区三区四区 | 一区二区三区免费 | 免费色网址 | 色婷婷综合久久久久中文一区二区 | 三级黄色片在线观看 | 人干人操| 国产精品久久久久aaaa九色 | 亚洲精品自在在线观看 | 男女网站免费观看 | 国产a级黄色录像 | 欧美精品一区二区三区在线四季 | 成人一区二区三区 | 欧州一区二区三区 | 精品福利在线 | 天天色图 | 国产免费一区二区 | 午夜三区 | 日韩精品一区二区三区四区视频 |