2016-01-25 103 views
-1

我在兩列中選擇值。 假設我的代碼和結果如下:sql server - 選擇數值並將列合併爲一個

SELECT 
(SELECT REPLACE(STUFF(column1, 1, PATINDEX('% '+REPLICATE('[0-9]', 5) + '%', column1), ''), ')', '')) as tablename , 
(SELECT REPLACE(STUFF(column2, 1, PATINDEX('% '+REPLICATE('[0-9]', 5) + '%', column2), ''), ')', '')) as tablename 
FROM table 

tablename    tablename 
12345     qwertyuiop 
67891     asdfghjkl 
zxcvbnm    98765 

我怎樣才能使從上述結果這兩列到下面這樣的結果?我嘗試使用union(all),但它不起作用。

tablename 
12345 
678910 
987654 
+0

搜索'ISNULL'或'COALESCE'。 –

+0

它應該是單列,而不是兩列。該查詢將返回一個名爲「tablename」的列,而不是兩個。 –

+1

這個問題真的不清楚......提供一些真實的例子,這不會幫助 – krtek

回答

1

如果您從COLS只想數值可以用下面的查詢:

SELECT CASE 
     WHEN ISNUMERIC ((SELECT REPLACE(STUFF(column1, 1, PATINDEX('% '+REPLICATE('[0-9]', 13) + '%', column1), ''), ')', ''))) <> 1 
     THEN (SELECT REPLACE(STUFF(column1, 1, PATINDEX('% '+REPLICATE('[0-9]', 13) + '%', column1), ''), ')', '')) 
     ELSE (SELECT REPLACE(STUFF(column2, 1, PATINDEX('% '+REPLICATE('[0-9]', 13) + '%', column2), ''), ')', '')) 
     END tablename 
FROM table 
+0

它顯示錯誤消息156,級別15,狀態1,行2 關鍵字'SELECT'附近的語法不正確。 Msg 102,Level 15,State 1,Line 2 ')'附近語法不正確。 Msg 156,Level 15,State 1,Line 4 關鍵字'ELSE'附近的語法不正確。 Msg 156,Level 15,State 1,Line 5 關鍵字'as'附近的語法不正確。 – 404notfound

+0

更新答案 – Max

1

我想你試圖從兩個不同的表中合併兩列。試試這個:

select col1 from table1 
UNION 
select col2 from table2 

使用union而不是union all。確保col1和col2是相同的類型。它工作。讓我知道如果任何問題

+0

ü可以作爲嘗試: (FROM表1 工會 選擇COL2選擇COL1作爲測試如表1所示)T 其中數字(T.test +'.0e0')= 1 一旦獲得了兩列的合併,就可以過濾來自單列的數值。讓我知道它是否有效。 –