2017-04-06 70 views
0

我的SQL Server區分大小寫:Latin1_General_CI_AS像操作使用時不產生正確的輸出 - SQL Server 2008中

我有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])+'%' 

任何人都可以建議我必須做什麼樣的tweek來得到結果。

回答

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是不區分大小寫。在大多數情況下,您不需要大寫數值。