我在SQL數據庫表中有一個簡單的nvarchar(25)列。大多數情況下,此字段應包含字母數字文本。但是,由於操作員錯誤,有很多情況下它只包含一個數字。我可以在SQL中進行簡單的搜索以確定這些情況嗎?即,確定表中的哪些行僅包含此列中的數字。作爲擴展,我是否也可以搜索那些只包含數字和空格和/或斜槓的列值。如何在varchar列中搜索數字
在其他語言(如Perl,Java)中,正則表達式可以快速輕鬆地解決此問題。但我一直無法在SQL中找到相應的東西。
我在SQL數據庫表中有一個簡單的nvarchar(25)列。大多數情況下,此字段應包含字母數字文本。但是,由於操作員錯誤,有很多情況下它只包含一個數字。我可以在SQL中進行簡單的搜索以確定這些情況嗎?即,確定表中的哪些行僅包含此列中的數字。作爲擴展,我是否也可以搜索那些只包含數字和空格和/或斜槓的列值。如何在varchar列中搜索數字
在其他語言(如Perl,Java)中,正則表達式可以快速輕鬆地解決此問題。但我一直無法在SQL中找到相應的東西。
是的,你可以通過使用SQL中使用IsNumeric函數實現這一目標斷絕
檢查更在此鏈接:http://msdn.microsoft.com/en-us/library/aa933213(SQL.80).aspx
select column_name from table_name where IsNumeric(column_name) <> 1
此處的isnumeric函數並不好,因爲isnumeric('787315689001e180')爲true,但輸入包含一個不是數字的'e'。 – 2012-04-19 13:20:24
只有數字:
SELECT * FROM Table WHERE ISNUMERIC(Field) = 1
隨着空間:
SELECT * FROM Table WHERE Field LIKE '% %'
以斜線:
SELECT * FROM Table WHERE Field LIKE '%/%'
組合:
SELECT * FROM Table WHERE ISNUMERIC(Field) = 1 OR Field LIKE '% %' OR Field LIKE '%/%'
這裏的isnumeric函數不好,因爲isnumeric('787315689001e180')爲真,但輸入包含一個'e',它不是數字。 – 2012-04-19 13:20:18
所有提到IsNumeric函數的答案,但他們是不正確的,我在評論提到過所有的答案這個安全漏洞存在答案。正確的解決方案是在where子句中使用正則表達式,其中包含不像'%[^ 0-9]%',請參閱下面的示例:
select column_name from table_name where column_name not like '%[^0-9]%'
可能的重複http://stackoverflow.com/questions/1858867/how-to-get-only-numeric-column-values – 2010-04-20 06:26:07
您接受的答案不起作用。嘗試'SELECT ISNUMERIC('1E2'),ISNUMERIC('1D2')' – 2011-09-25 19:22:50