[英]SQL match on letter and number arrangement
是否可以编写一条SQL语句来查找与特定字母/数字排列匹配的所有行?
即SELECT myCol FROM myTable WHERE myCol='<letter><letter><number>'
应该返回12X和34Y,但不能返回123X或34YY
我正在使用MySQL。
我尚未在此机器上测试MySQL,但我认为
SELECT myCol
FROM myTable
WHERE myCol REGEXP '^[0-9][0-9][A-Z]$'
应该做。 ^
是字符串开头的锚点, $
是字符串结尾的锚点,其余部分应该可以自我说明。
看起来您也可以使用REGEXP '^[[:digit:]][[:digit:]][[:alpha:]]$'
但完全未经测试,只是退出了文档。
对于sql server,可以与PATINDEX一起使用。 对于mysql,您具有REGEXP 。
编辑:Damien_The_Unbeliever指出我错了,并且PATINDEX不支持正则表达式。 没错,但是经过一番搜索之后,我发现您可以在sql server中使用正则表达式 ,因为它承载CLR。
许多数据库管理系统都支持正则表达式。 因此,例如在PostgreSQL 9.x中,您可以执行此操作。 。 。
create table mytable (
mycol varchar(10) primary key
);
insert into mytable values
('12X'),
('34Y'),
('123X'),
('34YY');
接着
select *
from mytable
where mycol ~ ('^[0-9][0-9][A-Z]$');
和Oracle的版本..这里是:
SELECT myCol
FROM myTable
WHERE REGEXP_LIKE(myCol, '^\d{2}[A-Z]$')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.