我有一個包含這樣的值,例如柱:返回字符串基於字符串內的值,但不截斷
Farari - 製造2013
梅賽德斯 - 製造2012
捷豹 - 製造1978年
我想回到最高或最近一年化妝車:
像這樣的事情都會給我一年,但明顯ly會截斷其餘的字符串:
SELECT
MAX(RIGHT(CarProfile, 4))
FROM mySchema.Car;
如何獲得最高年份但保持完整字符串?
在這種情況下:Farari - 製造2013
我有一個包含這樣的值,例如柱:返回字符串基於字符串內的值,但不截斷
Farari - 製造2013
梅賽德斯 - 製造2012
捷豹 - 製造1978年
我想回到最高或最近一年化妝車:
像這樣的事情都會給我一年,但明顯ly會截斷其餘的字符串:
SELECT
MAX(RIGHT(CarProfile, 4))
FROM mySchema.Car;
如何獲得最高年份但保持完整字符串?
在這種情況下:Farari - 製造2013
SELECT *
FROM Car
WHERE RIGHT(CarProfile, 4) =
(SELECT MAX(RIGHT(CarProfile, 4))
FROM Car)
你應該合理規範化表。我的推理模式將添加一年的列併爲其添加索引,以便它具有出色的查詢性能。
SELECT top 1 *
FROM Car order by RIGHT(CarProfile, 4)*1 desc
的Sql下面以供參考:
select CarProfile
from FROM mySchema.Car
where substr(CarProfile, CarProfile.length - 4, CarProfile.length) =
SELECT MAX(RIGHT(CarProfile, 4)) FROM mySchema.Car;
你好:Sunyen,這是TSQL還是MySQL? – Asynchronous
這是oracle。 – sunysen
,當你把它打印出來,而不是存儲在數據庫中,你應該得到的 '在製造'。因此,而不是你的表是:
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;?>
它會使你的表更加緊湊和友好
非常真實的,這就是我想要做的,是哈結果如下: – Asynchronous
關於thins查詢的最好的事情是它處理'tie'。這將檢索具有最新年份的所有記錄。 –
感謝您付出的巨大努力,特別是與小提琴。 – Asynchronous