我有一个包含两个字符串列的表:Name
和Code
. Code
是唯一的,但Name
不是。样本数据:
Name Code
-------- ----
Jacket 15
Jeans 003
Jeans 26
我想选择具有最小值的唯一行Code
,但不是数值;而是字符串的长度。当然这不起作用:
SELECT Name, Min(Code) as Code
FROM Clothes
GROUP BY Name, Code
上面的代码将为牛仔裤返回一行,如下所示:
Jeans | 003
这是正确的,因为作为一个数字,003
小于26
。但不是在我的应用程序中,它关心值的长度,而不是实际值。长度为三个字符的值大于长度为两个字符的值。我实际上需要它来返回这个:
Jeans | 26
因为 的长度比26
的长度短。003
那么如何编写 SQL 代码来选择具有最小长度而不是实际最小值的代码的行?我试过这样做:
SELECT Name, Min(Len(Code)) as Code
FROM Clothes
GROUP BY Name, Code
上面只返回一个字符,所以我最终得到了这个:
Jeans | 2