我需要编写select给我的记录,其中字段SerialNumber只有像这个MT和一些数字的字符串。例如MT34234234或MT455。 我不想要其他记录,例如价值MTA424或MT23423423BBA。 我写这个reqular expresion:
select * from
MyTable
where SerialNumber like 'MT%[0-9]'
但是它给了我MTA424的价值记录。有人可以帮我解决我的查询问题吗?
答案 0 :(得分:3)
您可以在字符串的开头使用检查MT的组合,然后在字符串的前2个位置后使用非数字字符。
declare @table table (SerialNumber varchar(64))
insert into @table
values
('MT34234234'),
('MT455'),
('MTA424'),
('MT23423423BBA')
select * from @table
where SerialNumber like 'MT%'
and right(SerialNumber,len(SerialNumber) - 2) not like '%[^0-9]%'
答案 1 :(得分:2)
就像@Ryan所说,SQL-Server中没有真正的正则表达式。但是,您可以通过添加第二个条件(例如
)来达到所需的选择select * from MyTable
where SerialNumber like 'MT%'
and SerialNumber not like 'MT%[^0-9]%'
(我也修改了第一个条件。)
答案 2 :(得分:0)
SELECT * FROM MyTable
WHERE SerialNumber LIKE 'MT%'
AND SerialNumber NOT LIKE 'MT%[a-zA-Z]%'
答案 3 :(得分:-4)
几乎就在那里!试试这个:
select *
from mytable
where serialnumber like 'MT[0-9]%[^a-z]'