2009-09-24 84 views
36

我想選擇使用包含在MySQL中只包含字母數字字符的所有行字母數字字符的行:僅選擇包含在MySQL

SELECT * FROM table WHERE column REGEXP '[A-Za-z0-9]'; 

然而,它的返回任先生所有行,他們包含非字母數字字符。

回答

64

試試這個代碼:

SELECT * FROM table WHERE column REGEXP '^[A-Za-z0-9]+$' 

這可以確保所有字符匹配。

+0

歐凱它做得好,但它不顯示空間包括數據字段。如何通過此查詢獲取包括數據字段的空間。 – 2013-07-27 07:14:38

+2

@ Md.MahabuburRahman:'9'和']'之間的所有空白:''^ [A-Za-z0-9] + $'' – 2013-07-29 07:40:10

+0

是否是正則表達式有效?我記得在最後一個字符上用isnumeric做這個。這很有趣。從BIRT \t其中ISNUMERIC(RIGHT(名稱,1))= 1 – chungtinhlakho 2016-06-03 01:18:52

3

試試這個:

REGEXP '^[a-z0-9]+$' 

由於正則表達式不區分除了二進制領域的敏感。

6

您的語句匹配任何位置包含字母或數字的字符串,即使它包含其他非字母數字字符。試試這個:

SELECT * FROM table WHERE column REGEXP '^[A-Za-z0-9]+$'; 

^$需要整個字符串相匹配,而不是隻是它的任何部分,並+查找1個以上 alphanumberic字符。

你也可以使用一個命名字符類,如果你喜歡:

SELECT * FROM table WHERE column REGEXP '^[[:alnum:]]+$'; 
-5

更改REGEXPLike

SELECT * FROM table_name WHERE column_name like '%[^a-zA-Z0-9]%' 

這一個正常工作

0

也有這樣的:

select m from table where not regexp_like(m, '^[0-9]\d+$') 

它選擇包含您想要的列中的字符的行(在示例中爲m,但您可以更改)。

大多數組合在Oracle平臺上無法正常工作,但這確實如此。分享以備將來參考。

-1

試試這個

select count(*) from table where cast(col as double) is null; 
+0

如果'col'是'ABC'',這會如何工作? – ebyrob 2016-11-09 16:08:41