最近我在SQL Server中使用ISNUMERIC,當時我遇到了一個問題,導致查找這段代碼。爲什麼ISNUMERIC('。')返回1?
SELECT ISNUMERIC('.')
這返回1,因爲在真的,不應該這樣返回0,因爲在假?
最近我在SQL Server中使用ISNUMERIC,當時我遇到了一個問題,導致查找這段代碼。爲什麼ISNUMERIC('。')返回1?
SELECT ISNUMERIC('.')
這返回1,因爲在真的,不應該這樣返回0,因爲在假?
請參閱IsNumeric() Broken? Only up to a point。
SELECT CAST('.' AS MONEY)
返回0.00
(儘管int
和float
轉換失敗)
ISNUMERIC
只檢查值可以被轉換爲數字數據類型是通常無用的任何一個。通常你想知道它是否可以轉換爲特定的類型。
Additionally it doesn't even seem to do that task correctly for all possible inputs.。 ISNUMERIC(' ')
返回0
,儘管成功地轉換爲int和money。相反ISNUMERIC(N'8')
返回1
,但不會成功投到我嘗試過的任何東西。
一些有用的幫手功能在這裏IsNumeric, IsInt, IsNumber。
SQL Server 2012引入了TRY_PARSE
和TRY_CONVERT
這對此有很大的幫助。
。考慮一下滑坡:'10'可以,'10.0'可以,'10.'可以......(_開始slide_)所以'.1'應該是可以的......並且'.0'和..是的'.'也可以。 [慷慨輸入解析](https://plus.google.com/114034641416688387662/posts/8bJZnLFxAfi)有時會有缺點。 – sehe
謝謝你,在Denali上推出! –
因爲「。」用於十進制數字!
看到here
爲ISNUMERIC ' - ' & ''爲什麼是數字(' - ')& isnumeric('。')返回 1?
答:因爲「 - 」的意思是否定的,所以「。」用於小數點 的數字。我不知道他們爲什麼把它命名爲ISNUMERIC。他們 應該命名它,ISNUMBERRELATED。
我想這也解釋了一些其他非數字字段作爲數字,這裏有進一步的信息 -
http://classicasp.aspfaq.com/general/what-is-wrong-with-isnumeric.html
都能跟得上。 1.1是數字。 ISNUMERIC())是非常基本的,甚至可能會說愚蠢的...因此它考慮了一段時間的數字。 –
','也可以(很多地區使用它作爲小數分頻器) – Unsliced