mySQL max()没有返回最大结果

Jam*_*mie 5 mysql

我无法尝试检索max courseid

数据:

coursename    courseid    
----------    --------
0001_Course   JAS9997
0002_Course   JAS9998
0003_Course   JAS9999
0004_Course   JAS10000
Run Code Online (Sandbox Code Playgroud)

查询:

SELECT max(courseid) FROM tblcourse WHERE courseid LIKE '%JAS%'
Run Code Online (Sandbox Code Playgroud)

LIKE将缩小到以JAS开头的标准.

查询仅返回JAS9999作为最大结果,但最大courseid为JAS10000.我错过了什么吗?

sas*_*llo 6

它不能MAX对像这样的文本中嵌入的数字这样做.它按字母顺序排序,因此JAS9追求JAS1.您必须在子字符串上执行max:

MAX(CAST(SUBSTRING(courseid FROM 4) AS UNSIGNED))
Run Code Online (Sandbox Code Playgroud)

  • 虽然它仍然是一个字符串...应该能够通过添加0来表示它,即MAX(SUBSTRING(courseid FROM 4)+0) (4认同)