2016-01-25 2 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

Если вы хотите только числовые значения из ваших перевалов вы можете использовать приведенный ниже запрос:

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

показывает ошибки Msg 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 

Используйте союз вместо объединения всех. Убедитесь, что col1 и col2 имеют одинаковые типы. Он работает. Дайте мне знать, если какие-либо вопросы

+0

и можно попробовать, как: (выберите col1 как испытание от table1 накидной выберите col2 как тест из таблицы 1) T где isnumeric (T.test + '.0e0') = 1 Как только вы получите слияние двух столбцов, вы можете отфильтровать числовые значения из отдельных столбцов. Дайте мне знать, если это сработает. –

Смежные вопросы