2010-05-05 3 views
1

Я пытаюсь выполнить некоторую работу с моей таблицей SQL.SQL Server Query

У меня есть 2 здания с номерами 1 - 100 в здании 1 и 101 - 199 в здании 2. У меня есть поле местоположения (которое я только что создал) и хочу запустить запрос, чтобы заполнить его либо «Building 1» или «Building 2» в зависимости от номера комнаты, который он имеет в поле «Комната».

Большое спасибо за помощь.

С уважением

Скотт

+1

@Galwegian: Не могу понять, зачем вы удаляете свой пост, если ответ правильный? –

+0

Что значит? –

+0

Galwegian отправил anwer, который был прав, но с тех пор удалил его. –

ответ

4

Вы можете использовать Case обновить таблицу:

Update your_table 
Set location = Case When room_number <= 100 Then 
         'Building 1' 
        Else 
         'Building 2' 
        End; 

Если все по комнате номеров есть три цифры следуют некоторые другие символы, используя substring должны работать :

Case When Cast(Substring(room_number, 1, 3) As Int) <= 100 Then 

Sinc е не все ваши номера начинаются с тремя цифрами (1A), вы можете использовать PatIndex, чтобы найти длину числа:

Case When 
    Cast(
     Substring(room_number, 1, PatIndex('%[A-Z]%', room_number || 'A') - 1) 
    As Int) <= 100 
Then 

Я сцеплению A, чтобы убедиться, что он работает с числовым номером числами.

+0

Спасибо. Как я смогу справиться с номерами комнат, такими как 120Z и 121Y? –

+0

Если все номера вашей комнаты - 3 цифры и один символ, вы можете использовать SUBSTRING на номере номера и сравнить это значение в инструкции case. –

+0

Номера моей комнаты идут от 1 до 500 и имеют другие между ними, такие как 120X, 121G и т. Д. (Всего около 20 комнат). –