У меня есть таблица в SQL Server, где мне нужно фильтровать комнаты по имени и типу. Проблема в том, что имена хранятся как varchar
, а также есть комнаты с буквами. Мне нужно отфильтровать комнаты по буквам, прежде чем я смогу сравнить их как int
, иначе я получу ошибку.
Вот пример из Room.Name:
030
210a
210b
Lan-Room-A
240
Я могу работать с именами комнат с помощью a
или b
с LEFT(Rooms.Name, 3)
, но если я хочу добавить (LEFT(Rooms.Name, 3) BETWEEN 0 and 350
и он достигает Lan-Room-A
, он, очевидно, не может преобразовать строку в int. Мне также нужно выполнить дополнительную фильтрацию, например Room.Type = 6
.
SELECT
Room.Name,
Room.Descr,
Room.MainUser
WHERE
LEFT(Room.Name, 1) NOT LIKE '%[0-9]%'
AND LEFT(Room.Name, 3) BETWEEN 0 AND 350
AND Room.Type = 6
(для простоты удалены некоторые соединения)
Мне просто нужно отфильтровать строки, содержащие строки, перед предложением when, но я понятия не имею, как.
Ребята, у вас есть идеи?
Обратите внимание, что я не могу редактировать базу данных.
Заранее спасибо.