2013-08-16 3 views
0

Мой запрос выглядит следующим образом:названия стран SQL SELECT Заменить аббревиатур

SELECT o.CustomerID, null emptyColumn, o.ShipFirstName, o.ShipCountry, c.EmailAddress 

FROM Orders o, Customers c 

WHERE o.CustomerID = c.CustomerID 

И результаты, как,

1,,John,United States,[email protected] 
2,,Peter,Canada,[email protected] 

Но мне нужно изменить «Соединенные Штаты» в «США» и «Канада» - «Са». Как я могу это сделать?

+1

хочешь заменить их в базе данных? –

+0

Не только в результатах @ImaneFateh – AZee

+0

это текстовый тип @Nithesh – AZee

ответ

1

Вы можете использовать case,

SELECT o.CustomerID, null emptyColumn, o.ShipFirstName, 
     case when o.ShipCountry = 'United States' then 'US' 
     when o.ShipCountry = 'Canada' then 'CA' 
     end, 
     c.EmailAddress 
FROM Orders o, Customers c 
WHERE o.CustomerID = c.CustomerID 
+0

Не могли бы вы поделиться своим кодом, который вы пробовали с ** случае ** ?? –

+0

Да, в моем синтаксисе произошла ошибка. как вы думаете, этот подход будет хорош для большого числа стран, поскольку у меня нет другого выбора рядом с отборочным заявлением? – AZee

+0

Помог ли мой ответ? –

2

Если это для большого круга стран, а затем сделать поиск кодов стран ИСО (for example) - импорт, что данные в новую таблицу, а затем присоединиться к этой таблице ,

Или поставить выбор стран в КТОС и присоединиться к тому, что, например,

WITH Countries(ISO_Code, ISO_Name) AS 
(
    SELECT 
    * 
    FROM (VALUES ('AF', 'AFGHANISTAN') 
       ,('AX', 'ÅLAND ISLANDS') 
       ,('AL', 'ALBANIA') 
       ,('DZ', 'ALGERIA') 
       ,('AS', 'AMERICAN SAMOA') 
       ,('AD', 'ANDORRA') 
       ,('AO', 'ANGOLA') 
       ,('AI', 'ANGUILLA') 
       ,('AQ', 'ANTARCTICA') 
       ,('AG', 'ANTIGUA AND BARBUDA')) nTab(nCol1, nCol2) 
) 
SELECT 
* 
FROM Countries c 
JOIN ... 
+0

да, это замечательный момент, но, к сожалению, из-за ограничений платформы я могу запускать только инструкцию SELECT. – AZee

+0

вы могли бы использовать CTE, тогда - я обновил свой пост – HotblackDesiato

0

Хотя ниже код будет работать, это будет лучше, если у вас есть еще один столбец в таблице стран с сокращениями

select 
    case 
    When o.ShipCountry = 'UnitedState' Then 'US' 
    When o.ShipCountry = 'Canada' Then 'CA' 
    ELSE o.ShipCountry 
    End 
0

Попробуйте это,

SELECT o.CustomerID, null emptyColumn, o.ShipFirstName, o.ShipCountry = 
CASE WHEN oShipCountry ='United States' THEN 'US' 
WHEN o.ShipCountry = 'Canada' then 'CA' END, 
c.EmailAddress 
FROM Orders o, Customers c 
WHERE o.CustomerID = c.CustomerID 
Смежные вопросы