繁体   English   中英

字母和数字排列的SQL匹配

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM