在VARCHAR字段中使用MAX()

Viv*_*vek 7 sorting string oracle

我有一个包含以下数据集的表

ID (VARCHAR2 field)
D001
D002
D010
D0012
Run Code Online (Sandbox Code Playgroud)

max()在这个领域使用.

Select max(ID) from <table-name>;
Run Code Online (Sandbox Code Playgroud)

它返回D010结果.

为什么结果不是D0012

Tho*_*mas 18

你得到的D010是因为按字母顺序,D010后来D0012或说另一种方式,D01后来D00,因此任何事情D01x发生在任何开始之后D00x.


San*_*osh 5

下面的代码按照您的期望为我工作

select max(to_number(regexp_substr(id, '\d+'))) id from <yourtable>;
Run Code Online (Sandbox Code Playgroud)