常规表达MS SQL。怎么用于选择。

时间:2018-06-06 20:16:40

标签: sql-server

我需要编写select给我的记录,其中字段SerialNumber只有像这个MT和一些数字的字符串。例如MT34234234或MT455。 我不想要其他记录,例如价值MTA424或MT23423423BBA。 我写这个reqular expresion:

select * from 
MyTable
where  SerialNumber like 'MT%[0-9]'

但是它给了我MTA424的价值记录。有人可以帮我解决我的查询问题吗?

4 个答案:

答案 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]'