2016-04-25 21 views
2

我有MySQL表具有多個列,一列具有字符串數據類型code和列的值可能只或字符串的混合,並且是數字位數例如:一個行值具有像2cskjf89357677和其它行列值或78732sdjfh如何檢查列值在mysql中有字符串或數字值?

mysql> select * from testuser; 
+------+--------------+ 
| id | code   | 
+------+--------------+ 
| 1 | 232   | 
| 2 | adfksa121dfk | 
| 3 | 12sdf  | 
| 4 | dasd231  | 
| 5 | 897   | 
+------+--------------+ 
5 rows in set (0.00 sec) 

mysql> show create table testuser; 
+----------+------------------------------------------------------------------ ---------------------------------------------------------------+ 
    | Table | Create Table                              | 
+----------+------------------------------------------------------------------ ---------------------------------------------------------------+ 
| testuser | CREATE TABLE `testuser` (
    `id` int(11) DEFAULT NULL, 
    `code` varchar(20) DEFAULT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 | 
+----------+------------------------------------------------------------------ ---------------------------------------------------------------+ 
1 row in set (0.00 sec) 

mysql> 

我想僅過濾出其在具有在code列字符串值code柱或過濾器的行具有數字值的行。

回答

2

試試這個

MySQL查詢到從一個特定的列

SELECT column FROM TABLE where column NOT REGEXP '^[0-9]+$' ; 

MySQL查詢只獲取整數值從一個特定的列只獲取字符串值

SELECT column FROM TABLE where column REGEXP '^[0-9]+$' ; 
+0

您可能想編輯您的答案,並將代碼中的評論分開,甚至放置多個代碼行和文本行。 – Bonatti

+0

好吧謝謝@Bonatti – JYoThI

+0

@jothi'ISNUMERIC'沒有在MySql中定義,得到這個錯誤:'錯誤1305(42000):函數backend.ISNUMERIC不存在',我正在使用以下版本的mysql:'innodb_version | 5.6.26-74.0''版本| 5.6.26-74.0-log'從查詢中得到:'SHOW VARIABLES LIKE「%version%」;' –

1

要獲得數字

SELECT id,code 
FROM table_name 
WHERE code REGEXP '^[0-9]+$'; 

要獲得字符串值

SELECT * 
FROM table_name 
WHERE code REGEXP '^[a-zA-Z]+$' 
+0

爲獲得數字行,查詢做工精細,可以檢查查詢輸出[這裏](https://gist.github.com/krishnaiitd/6373ad1281f76bb4ebbe32ef8946c73b#file-testusertable-L95) ,對於字符串變空,我通過在數字正則表達式中應用NOT操作符來獲得結果。 –

0

你可以在MySQL中使用正則表達式了。

SELECT * FROM `table` WHERE `code` REGEXP '[0-9]'; 

結果將是行,其中code列中的任意數字。

+0

不,你的正則表達式不正確,因爲我詢問過的問題,檢查你的查詢輸出[這裏](https://gist.github.com/krishnaiitd/6373ad1281f76bb4ebbe32ef8946c73b#file-testusertable-L127) –

1

使用regular expressions

SELECT * 
FROM myTable 
WHERE code REGEXP '^[0-9]+$'; 

這將過濾掉所有的數字列值。

+0

是的,我使用正則表達式得到結果。 –

0

試試這個,

select id,code from table_name where code NOT REGEXP '^[0-9]+$' 

或者,

select id,code from table_name where code like '%[^0-9]%' 
+0

第一個查詢:'選擇id,來自testuser的代碼,其中代碼REGEXP'^ [0-9] *';'給出值爲'232','adfksa121dfk', '12sdf','dasd231''897',我想只過濾'code'列中的數字值或'code'列中的字符串值的行,這裏的字符串例子是'12qwq','we121','' 2w2'等 –

+0

第二次查詢返回空:'mysql> select id,代碼來自testuser,代碼如'%[^ 0-9] *%'; 空集(0.00秒)' –

+0

我糾正了答案嘗試這是正確的。 –

相關問題