2013-04-12 40 views
1

我有一个表格,其中包含数据类型为'Memo'的列。
该字段包含“X003”,“X0022”,“X002”,“X0030”,“X0031”,“X004”等值。总之,第一个“X00”部分是常见的,其余部分是整数。
我想通过sql查询选择包含第二部分中最大整数的行。我应该如何编写sql?
如果它只是一个整数,我会在sql中使用“MAX()”来获得最大值。但它不同于此。我该怎么办? 请帮帮我。从MS Access中的字母数字列中挑选最大值

回答

5
SELECT max(val(mid([col],3))) FROM thetable; 

即,选择第三个字符后的最大值,转换为数字(如果不可转换,则为0)。

+0

还有一个问题:如果表中没有记录,它会返回0吗? –

0

您可以在查询中执行一个简单的MID()以获取最后两个字符,然后将它们转换为整数,甚至直接在该块上执行MAX()

+0

是否在访问'SUBSTRING()'工作? –

+0

我的不好。它没有。看起来我正在用太多的语言工作。 :) – dotNET

0
How should i write the sql? 

如果您正在寻找sql查询

SELECT 
    MAX(CONVERT(INT,CASE WHEN PatIndex('%[a-z]%',REVERSE(memo)) > 0 
     THEN RIGHT(memo,PatIndex('%[a-z]%',REVERSE(memo))-1) 
     ELSE NULL END)) AS maxmemo 
FROM Table1 
+0

...并且SQL语句在Access中工作? –

相关问题