SQL для сопоставления с новым значением между двумя таблицами - PullRequest
0 голосов
/ 07 ноября 2010

При попытке скопировать значения TableA в TableB в среде SQL 2008 я пытаюсь условно отобразить некоторые значения в новый тип и значение.

Например, в TableA есть столбец Letters varchar (1) и хранит буквы алфавита, и я хочу переместить эти значения в TableB в столбце Numbers int.

INSERT INTO TableB( SomeColumn1, Numbers, SomeColumn2 )
SELECT SomeColumn1, 
       LetterToNumber = 
       CASE Letters
              WHEN 'A' THEN 1
              ...
              WHEN 'Z' THEN 26
       END,
       SomeColumn2
FROM TableA

Это правильный способ сделать это?

Ответы [ 2 ]

2 голосов
/ 07 ноября 2010
INSERT INTO TableB( SomeColumn1, Numbers, SomeColumn2 )
SELECT SomeColumn1, 
       ASCII(UPPER(Letters)) - 64, --Uppercase A is 65 decimal, 41 hex
       SomeColumn2
FROM TableA
0 голосов
/ 07 ноября 2010

Либо это, либо используйте функцию преобразования значения в тип ascii ...

Select SomeColumn1, select ascii(Letters) - 64, SomeColumn2

Это предполагает, что все ваши буквы являются заглавными.Вы также можете сделать

Select SomeColumn1, select ascii(ucase(Letters)) - 64, SomeColumn2

, который преобразует значения нижнего регистра в верхний регистр перед генерацией целого числа ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...