如何select oracle中的最大长度列数据
How to select max length column data in oracle
我有如下数据:
No,Code,Name
1,code1,code1 name
2,code2,This name for code2
3,code3,code3 name
我想 select 记录 2,我尝试 SQL 如下所示,但出现错误 ORA-00934: group function is not allowed here
,我该怎么办?
select code, name from my_mst where max(length(name)) group by name;
使用子查询确定最大长度:
SELECT code, name
FROM my_mst
WHERE LENGTH(name) = (SELECT MAX(LENGTH(name)) FROM my_mst)
这将适用于您向我们展示的特定示例数据集。但是,它有一个限制,即如果最大名称长度相同,它将 return 多条记录。如果您想使用代码打破这种关系,那么您可以考虑使用分析函数:
SELECT t.*
FROM
(
SELECT code, name,
ROW_NUMBER() OVER (ORDER BY LENGTH(name) DESC, code) rn
FROM my_mst
) t
WHERE t.rn = 1;
我有如下数据:
No,Code,Name
1,code1,code1 name
2,code2,This name for code2
3,code3,code3 name
我想 select 记录 2,我尝试 SQL 如下所示,但出现错误 ORA-00934: group function is not allowed here
,我该怎么办?
select code, name from my_mst where max(length(name)) group by name;
使用子查询确定最大长度:
SELECT code, name
FROM my_mst
WHERE LENGTH(name) = (SELECT MAX(LENGTH(name)) FROM my_mst)
这将适用于您向我们展示的特定示例数据集。但是,它有一个限制,即如果最大名称长度相同,它将 return 多条记录。如果您想使用代码打破这种关系,那么您可以考虑使用分析函数:
SELECT t.*
FROM
(
SELECT code, name,
ROW_NUMBER() OVER (ORDER BY LENGTH(name) DESC, code) rn
FROM my_mst
) t
WHERE t.rn = 1;