2013-06-04 63 views
0

我有兩個表,A和B. A有許多列,如Date,Customer,Price,typedesc等。B只有一個列typedesc。我想檢索在A的typedesc在B中的行。所以我寫了基於來自兩個表的字符串匹配的SQL檢索結果

select * from A where typedesc in (select typedesc from B) 

我得到了0行的結果。所以,我想

select A.* from A inner join B on A.typedesc=B.typedesc 

不過我在結果

得到0行我兩個表中手動檢查TYPEDESC列,也有匹配的條目。 TYPEDESC包含字符串,它是類型爲varchar2的

下面是樣本表

DATE  CUSTOMER  TYPEDESC  SKU  PRICE 
02/01/2013 4567  CREAM CORDIALS 1234  23 
03/01/2013 3256  U.S. BRANDY  3322  10.5 

TYPEDESC 

CREAM CORDIALS 
FIRE WHISKY 
+0

您的查詢應該可以正常工作。你可以提供樣本記錄嗎? –

+0

@JW웃添加表格樣本 – user2133404

+0

您的查詢應該工作:http://www.sqlfiddle.com/#!4/93a4d/1請檢查記錄是否有多餘的空格。 –

回答

1

嘗試使用TRIM函數比較之前,以避免失配由於多餘的空間。

+0

謝謝,它的工作。當我看到輸出時,間距似乎是正確的。但正如你所說,它需要修剪。 – user2133404

+1

在連接表時不使用'TRIM()',因爲如果你有一個索引,它將會終止索引。最好的方法是通過修剪記錄來更新記錄。 'UPDATE B SET TYPEDESC = TRIM(TYPEDESC)',所以最終不會像這樣加入'A.typedesc = TRIM(B.typedesc)' - 壞。 –

相關問題