是否可以编写一个SQL语句,查找与特定字母/数字排列匹配的所有行?
即。 SELECT myCol FROM myTable WHERE myCol='<letter><letter><number>'
应该返回12X和34Y而不是123X或34YY
我正在使用MySQL。
答案 0 :(得分:3)
我没有在这台机器上测试MySQL,但我认为
SELECT myCol
FROM myTable
WHERE myCol REGEXP '^[0-9][0-9][A-Z]$'
应该这样做。 ^
是字符串开头的锚点,$
表示字符串结尾,其余部分应该是自解释的。
看起来您也可以使用REGEXP '^[[:digit:]][[:digit:]][[:alpha:]]$'
,但完全未经测试,只是关闭了文档。
答案 1 :(得分:1)
对于sql server,您可以使用PATINDEX。对于mysql,您有REGEXP。
编辑:Damien_The_Unbeliever指出我错了,PATINDEX不支持正则表达式。这是正确的,但经过一些谷歌搜索后,我发现你可以在SQL Server中use regular expressions,因为它托管了CLR。
答案 2 :(得分:1)
许多数据库管理系统都支持正则表达式。因此,在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]$');
答案 3 :(得分:1)
和甲骨文的版本......在这里:
SELECT myCol
FROM myTable
WHERE REGEXP_LIKE(myCol, '^\d{2}[A-Z]$')