【发布时间】:2018-06-29 09:57:35
【问题描述】:
我在 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 子句之前过滤掉包含字符串的行,但我不知道如何。
你们有什么想法吗?
请注意,我无法编辑数据库。
提前致谢。
【问题讨论】:
标签: sql sql-server where