2014-01-14 74 views
0

我有一個具有數字的Id字段的表。我想查看一下,如果這個數字在$$^$$ ex:$$^$$1265$$^$$所包圍的表格中,應該與下一個表格中的ID字段1265相匹配。以下是我迄今爲止:Oracle SQL:NVARCHAR2包含一個數字字段

SELECT * 
FROM VarTable a, IDTable b 
WHERE CONVERT(NVARCHAR2(400 CHAR), b.id) LIKE a.var_value;` 

我也曾嘗試:

SELECT * 
FROM VarTable a, IDTable b 
WHERE a.var_value LIKE CONVERT(VARCHAR(50), b.id); 

底拋出一個「失蹤表達錯誤」和上一個拋出一個「缺少右括號」的錯誤。

任何想法?

回答

4

你似乎是使用SQL Server convert()。該功能在Oracle中執行其他操作(請參閱here)。

嘗試這樣:

SELECT * 
FROM VarTable a join 
    IDTable b 
    on a.var_value LIKE '%$$'||cast(b.id as varchar2(255))||'$$%'; 

您還可以使用to_char()到數字轉換爲特定的字符串表示。

+0

這工作完美。我早些時候嘗試使用to_char(),但總是會出錯。 oracle中的'||'串聯?我正在嘗試使用'+'... – LiverpoolFTW

+0

Gordon - 只是好奇:在這種情況下,我通常會讓Oracle爲我隱式投射:'... LIKE'%$$'|| b.id || '$$%''。這是一個壞主意嗎? –

+3

@EdGibbs。 。 。對於'||'來說這是一個好主意,因爲演員陣容很明顯。在其他情況下,比如函數的參數,我爲了可維護性而進行了明確的轉換。因爲我使用了很多SQL Server,所以我一直對字符串連接進行明確的轉換。 SQL Server使用'+'來進行字符串連接,如果沒有顯式的強制轉換,它會產生一個錯誤。 –

2

它是一個數字,一個varchar,我會去:

SELECT * 
    FROM VarTable a, 
     IDTable b 
WHERE a.var_value LIKE '%$$'||b.id||'&&%'; 
+0

如果a.var_value = $$^$$ 912659 &&^&&和b.id = 1265會怎麼樣?是的,它會失敗。 – San

+0

@你說得對。我會更新它。謝謝 –