如何在查询中组合Right和Like函数?

时间:2013-03-06 15:13:53

标签: sql ms-access

鉴于以下字段和条目,如何找到最后4个字母中包含非数字字符的3个条目?

Field1
------
MA1234
DC4567
OHABCD
CAWXYZ
FLLMNO
MI9876

我猜它会是RightLike "[A-Z]*"的组合,例如Right([Field1], 4) = Like "[A-Z]*",但这不起作用。

编辑:我正在寻找任何最后4个字符中任何一个都是非数字的条目。

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以抓取最后四个字符,并一次比较一个字符,如下所示:

WHERE RIGHT(Field1, 4) LIKE '[A-Z][A-Z][A-Z][A-Z]'

我知道这个例子是在SQL 2008中,但是这里的a SQL Fiddle也是如此。

修改

如果您想要包含至少一个非数字字符的字段(即不是全部为0-9),您可以搜索非数字值(LIKE '*[^0-9]*')并确保所有四个字符不是数字(NOT LIKE '[0-9][0-9][0-9][0-9]'):

WHERE RIGHT(Field1, 4) LIKE '*[^0-9]*' AND 
    RIGHT(Field1, 4) NOT LIKE '[0-9][0-9][0-9][0-9]'

答案 1 :(得分:0)

以下是答案:

SELECT *
FROM 
(
    VALUES
        ('MA1234'),
        ('DC4567'),
        ('OHABCD'),
        ('CAWXYZ'),
        ('FLLMNO'),
        ('MI9876')
) v(Code)
WHERE Code like '*[A-Z][A-Z][A-Z][A-Z]'