我的SQL服务器是区分大小写的:Latin1_General_CI_AS
我有2张表,如下所示。
DECLARE @TABLEA TABLE
(
CUSTNAME VARCHAR (100)
)
INSERT @TABLEA
SELECT 'ONE STOP MOTORIST CENTRE'
DECLARE @TABLEB TABLE
(
CUSTNAME VARCHAR (100)
)
INSERT @TABLEB
SELECT 'ONE STOP MOTORIST CENTRE & BODYSHOP' UNION ALL
SELECT 'One Stop Motorist Centre (Cambridge' UNION ALL
SELECT 'One Stop Motorist Centre (Cambridge' UNION ALL
SELECT 'One Stop Motorist Centre & Bodyshop'
但是当我在查询之下运行时,我没有得到它,它没有给出任何结果。
SELECT * FROM @TABLEA A INNER JOIN @TABLEB B ON '%'+ UPPER(A.[CUSTNAME])+'%' like '%'+ UPPER(B.[CUSTNAME])+'%'
任何人都可以建议我必须做些什么来获得结果。
答案 0 :(得分:0)
该模式位于like
的右侧侧。以你的例子:
SELECT *
FROM @TABLEA A INNER JOIN
@TABLEB B
ON UPPER(B.[CUSTNAME]) LIKE '%'+ UPPER(A.[CUSTNAME])+'%';
如果要包含在任一方向,请使用以下两个条件:
SELECT *
FROM @TABLEA A INNER JOIN
@TABLEB B
ON UPPER(B.[CUSTNAME]) LIKE '%'+ UPPER(A.[CUSTNAME])+'%' OR
UPPER(A.[CUSTNAME]) LIKE '%'+ UPPER(B.[CUSTNAME])+'%';
我还应该注意,默认情况下,SQL Server不区分大小写。在大多数情况下,您不需要对值进行大写。