34,588
社区成员
发帖
与我相关
我的任务
分享
SELECT t1.NAME , t2.*
FROM t1
LEFT OUTER JOIN t2
ON PATINDEX('%'+t2.lastname+'%',t1.name)>0 --匹配t2.lastname是t1.name的子集
CREATE TABLE for_Charindex
(id int IDENTITY(1,1),
v_name varchar(32)
)
INSERT for_Charindex(v_name) VALUES ('shen')
INSERT for_Charindex(v_name) VALUES ('sheng')
INSERT for_Charindex(v_name) VALUES ('shang')
INSERT for_Charindex(v_name) VALUES ('ang')
INSERT for_Charindex(v_name) VALUES ('ing')
INSERT for_Charindex(v_name) VALUES ('sting')
CREATE TABLE for_Charindex_T
(id int IDENTITY(1,1),
v_name varchar(32)
)
INSERT for_Charindex_T(v_name) VALUES ('sh')
INSERT for_Charindex_T(v_name) VALUES ('en')
INSERT for_Charindex_T(v_name) VALUES ('ting')
select * from for_Charindex t1,for_Charindex_t t2 where CHARINDEX(t1.v_name,t2.v_name)>0
SELECT A.*,B.* FROM for_Charindex A ,for_Charindex_T B
WHERE CHARINDEX(A.v_name,B.v_name) > 0 OR CHARINDEX(B.v_name,A.v_name)> 0
--
id v_name id v_name
----------- -------------------------------- ----------- --------------------------------
1 shen 1 sh
2 sheng 1 sh
3 shang 1 sh
1 shen 2 en
2 sheng 2 en
5 ing 3 ting
6 sting 3 ting
(7 row(s) affected)
--Ⅰ表和数据
SET NOCOUNT ON
GO
CREATE TABLE for_Charindex
(id int IDENTITY(1,1),
v_name varchar(32)
)
INSERT for_Charindex(v_name) VALUES ('shen')
INSERT for_Charindex(v_name) VALUES ('sheng')
INSERT for_Charindex(v_name) VALUES ('shang')
INSERT for_Charindex(v_name) VALUES ('ang')
INSERT for_Charindex(v_name) VALUES ('ing')
INSERT for_Charindex(v_name) VALUES ('sting')
CREATE TABLE for_Charindex_T
(id int IDENTITY(1,1),
v_name varchar(32)
)
INSERT for_Charindex_T(v_name) VALUES ('sh')
INSERT for_Charindex_T(v_name) VALUES ('en')
INSERT for_Charindex_T(v_name) VALUES ('ting')
--Ⅱ 查询
DECLARE @v_name varchar(32)
DECLARE @Count int
DECLARE @Max int
DECLARE @v_nameComp varchar(32)
DECLARE @CountComp int
DECLARE @MaxComp int
DROP TABLE #for_Charindex
CREATE TABLE #for_Charindex (v_name varchar(32),v_nameComp varchar(32))
SET @Count = 1
SET @CountComp = 1
SELECT @MaxComp = COUNT (id) FROM for_Charindex_T
SELECT @Max = COUNT (id) FROM for_Charindex
WHILE @Count <= @Max
BEGIN
SELECT @v_name = v_name FROM for_Charindex WHERE id = @Count
WHILE @CountComp <= @MaxComp
BEGIN
SELECT @v_nameComp = v_name FROM for_Charindex_T WHERE id = @CountComp
IF CHARINDEX(@v_nameComp,@v_name) > 0
BEGIN
INSERT INTO #for_Charindex(v_name,v_nameComp) SELECT @v_name,@v_nameComp
END
SET @CountComp = @CountComp + 1
END
SET @Count = @Count + 1
SET @CountComp = 1
END
SELECT * FROM #for_Charindex
--Ⅲ结果
v_name v_nameComp
-------------------------------- --------------------------------
shen sh
shen en
sheng sh
sheng en
shang sh
sting ting
select t1.name
from t1
where t1.name in
(select t2.lastname
from t2
)
select *,stuff((select ','+lastname from t2 for xml path('')),1,1,'') from t1