1

我有一列包含这样的值,例如:

法拉里 - 2013 年制造

梅赛德斯 - 2012 年制造

捷豹 - 1978 年制造

我想退回制造年份最高或最近的汽车:

像这样的东西会给我一年,但显然会截断字符串的其余部分:

SELECT
MAX(RIGHT(CarProfile, 4)) 
FROM mySchema.Car;

我如何获得最高年份但保持完整的字符串?

在这种情况下:Farari - 2013 年制造

4

4 回答 4

2
SELECT  top 1 *
FROM    Car order by RIGHT(CarProfile, 4)*1 desc 
于 2013-09-22T08:10:02.637 回答
1
SELECT  *
FROM    Car
WHERE   RIGHT(CarProfile, 4) =
        (SELECT MAX(RIGHT(CarProfile, 4)) 
        FROM Car)

您应该正确规范您的表格。我建议的架构将添加一列一年并对其进行索引,以便它具有出色的查询性能。

于 2013-09-22T08:02:23.280 回答
0

下面的Sql供参考:

select CarProfile
  from FROM mySchema.Car
 where substr(CarProfile, CarProfile.length - 4, CarProfile.length) =
        SELECT MAX(RIGHT(CarProfile, 4)) FROM mySchema.Car;
于 2013-09-22T08:13:30.490 回答
0

当您打印出来时,您应该得到“制造”,而不是存储在数据库中。因此,您的表格将是:

CarProfile | Year
---------------
Ferrari | 2013
Mercedes | 2012
Jaguar | 1978

您的“制造”将通过如下查询检索:

SELECT  CarProfile, ' - made in', year
FROM    Car
HAVING  year = MAX(year) 

或者您可以在显示时编写它(例如php):

<?php echo $CarProfile . " - made in " $year;?>

它将使您的桌子更加紧凑和友好

于 2013-09-22T08:16:51.083 回答