2016-02-09 50 views
0

我試圖在SQL中查找價格列的最大值,但價格在它們前面有一個$符號,所以當我執行Max(column_name)時,它不會顯示正確的答案。我如何擺脫$符號?謝謝。在SQL中刪除前綴數字

+1

你能舉一些樣品數據嗎? –

+4

你正在使用哪些DBMS? –

+0

排名標題工作室\t全球\t國內/%\t海外/%\t年^ \t \t 頭像\t福克斯\t $ 2,788.0 \t $ 760.5 \t 27.3%\t $ 2,027.5 \t 72.7%\t 2009年^ 泰坦尼克\t相提並論。 \t $ 2,186.8 – Tan

回答

0

假設你使用SQL服務器和你的數據是在一個varchar或nvarchar列:

DECLARE @Data varchar(max) = '$565' 

SELECT MAX(CAST(REPLACE(@data,'$','') AS INT)) 

結果:

enter image description here

所以你可以做的是:

SELECT MAX(CAST(REPLACE(column_name,'$','') AS INT) 
+0

謝謝。這工作。我也意識到它不工作的原因是因爲在第一行中插入了一些文本值,這些值基本上是列的名稱。我刪除了文本行,然後它工作正常,即使有$符號在那裏。 – Tan

+0

太好了,你可能想要將TEXT的數據類型從TEXT更改爲VARCHAR(MAX):https://msdn.microsoft.com/en-us/library/ms143729.aspx –

+0

感謝您的提示。會做。 – Tan

0

如果$是唯一的非字母數字字符嘗試類似這

select MAX(convert(decimal(10,2),replace(price,'$',''))) 
0

一個迅速替代方法是這樣的:

SELECT column_name FROM table_name ORDER BY column_name DESC LIMIT 1

+0

謝謝。這工作。我也意識到它不工作的原因是因爲在第一行中插入了一些文本值,這些值基本上是列的名稱。我刪除了文本行,然後它工作正常,即使有$符號在那裏。 – Tan

1

假設量都格式相同(也就是,有或無美分),那麼你可以做:

select price 
from t 
order by len(price) desc, price desc 
fetch first 1 row only; 

請注意,某些數據庫拼寫爲len()的爲length()。還有一些拼寫fetch first 1 row only可能爲limit - 或者可能使用其他方法,如toprownum