在 where 子句中加入大小写语句



我的要求如下:我需要提取所有公司数据,这些数据在表格中具有相似的名称(名称中应出现前3个单词,可以在中间(作为输入的公司名称。

我的查询适用于名称超过 3 个单词的数据,但对于小于或等于 3个单词的数据,它失败了。

我不明白如何在 where 条款中加入条件。

我的查询如下

select regno,name from ereg 
where 
(name  like '%' +(
SELECT SUBSTRING(name, 0, CHARINDEX(' ', name, CHARINDEX(' ', name, CHARINDEX(' ', name, 0)+1)+1)) matchingwrd
FROM ereg where regno='C2113-UPD01')+'%') 

脚本如下

CREATE TABLE ereg(
regnoINT, name VARCHAR(50)
);
INSERT INTO ereg (regno,name)  
values 
('C2113-UPD01','future company Ltd'),  
('C2223-UPD01','MY future company Ltd Corp'),  
('C2113-UPD01','Prime Private Furnishings housing Ltd  '),  
('C26903-UPD01','My Prime Private Furnishings Service   '), 

例如,它适用于regno='C2113-UPD01',并给出输出-->>'C26903-UPD01','我的主要私人家具服务
,但如果输入是'C2113-UPD01'我的查询失败,无法获取'C2223-UPD01'公司数据

您的表数据插入脚本,数据和脚本似乎都不是从工作版本中获取的。我必须清理所有东西。

我为获得 3 个单词所做的是在名称前面添加另一个空格: 你的询问仍然给我带来了麻烦。但这就是我是如何做到的

;With cted as
(
Select regno, name, 
SUBSTRING(name + ' ', 0, CHARINDEX(' ', name + ' ', CHARINDEX(' ', name + ' ', CHARINDEX(' ', name + ' ', 0)+1)+1)) as ThreeWords 
from ereg 
)
Select c1.regno, c1.name, c2.regno, c2.name 
from cted c1
inner join cted c2 on c2.name like    '%' + c1.ThreeWords + '%' and c1.regno <> c2.regno
Where  c1.regno='C2213-UPD01' -- or c1.regno='C2113-UPD01'

这是小提琴

最新更新