我需要写select,它给了我字段SerialNumber中只有像这样的字符串和一些数字的记录。例如MT34234234或MT455。我不想要其他记录,例如,值为MTA424或MT23423423BBA的记录。我写了这样一个规则表达式:
select * from
MyTable
where SerialNumber like 'MT%[0-9]'
但它给我的记录是有价值的MTA424。有人能帮我解决我的问题吗?
发布于 2018-06-07 04:22:38
您可以在字符串的开头检查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]%'
发布于 2018-06-07 04:28:51
就像@Ryan说的那样,SQL-Server中没有真正的正则表达式。但是,您可以通过添加第二个条件来获得所需的选择,例如
select * from MyTable
where SerialNumber like 'MT%'
and SerialNumber not like 'MT%[^0-9]%'
(我也修改了第一个条件。)
发布于 2018-06-07 04:38:19
SELECT * FROM MyTable
WHERE SerialNumber LIKE 'MT%'
AND SerialNumber NOT LIKE 'MT%[a-zA-Z]%'
https://stackoverflow.com/questions/50728848
复制相似问题