2013-01-25 24 views
0

在包含整數(作爲字符串)和非整數字符串和符號的混合表中,我有一個nvarchar(200)列。例如。一些樣本數據: -如何在sql中將不同的數據類型轉換爲int

恕我打字在我最初的文章中,我提到的varchar(200),但實際上它是 '爲nvarchar(200)'

02 
0 
.../ 
125 
00125 
/2009 
1000 
0002589 
000.00125 

馬拉數字like & letters

如何訂購此列?

+2

爲了? – TNK

+0

按專欄名稱排列 – narendra

+0

您可以在訂購後顯示正確的樣品和預期產量..? – bonCodigo

回答

0

許多DBMS具有CAST()函數,您可以將一個數據類型轉換爲另一個數據類型。

對於MySQL看看this site

0

您可以使用CASTvarcharINT因爲VARCHAR持有適當的數字轉換。

SELECT CAST(varCharCol as Int)

例如

col1 as Varchar(10)

col1 = '100'轉換爲INT將successufl

但如果col1 = '100 xyz'將在過程不成功的。

看着你的字符串,你可能不得不使用LTRIM,REPLACE號碼來獲得數字或使用正則表達式來獲得用逗號分隔的數字。這也不是很清楚你的原始字符串是什麼樣的。

+0

OP在他的問題中清楚地提到「它包含整數(作爲字符串)和非整數字符串和符號的混合」# –

+0

@satindersingh所以你想要什麼說? ;)我已經提到'CAST'只能用於varchar()中的一個適當的數字......如果需要用'number'命令,OP需要從字面上清理他的列值。 – bonCodigo

+0

@narendra如果列沒有特殊字符被alpahnumerics排序/排序,你還好嗎? – bonCodigo

0

您可以使用CAST並轉換將字符串類型值轉換爲int類型。但請確保數值應該是數字。

select convert(int,'123') 

select CAST('123' as int) 
+1

我不認爲它是否會起作用,因爲在問題中指出,字段列包含混合** '整數和非整數** ** – Luv

+0

@Madhu:OP明確提到'它包含整數(作爲字符串)和非整數字符串和符號' –

0

您可以通過平均使用此查詢

SELECT CASE
WHEN ISNUMERIC(colName)=1 THEN ROUND(colName, 0) ELSE 0 END AS [colName]
FROM tblName

+0

只是想着這樣的方法。 :) – Ric

相關問題