Mysql 如何选择不是数字的行
如何在MySQL中选择不是数字的行Mysql 如何选择不是数字的行,mysql,select,numbers,where,Mysql,Select,Numbers,Where,如何在MySQL中选择不是数字的行 SELECT * FROM `TABLE` WHERE `Column_B` <> Number 选择* 从`表` 其中,`Column_B`编号 我知道,这是个愚蠢的问题,但我还没有找到解决办法。列B是varchar(3)。这是一种方法,使用mysql操作符(): 支持有符号/无符号整数、小数和科学记数法 注意:建议避免在实体名称中使用sql关键字,即使您用反勾号引用它们。试试这个SQLFIDLE 从表1中选择*,其中列不是REGE
SELECT *
FROM `TABLE`
WHERE `Column_B` <> Number
选择*
从`表`
其中,`Column_B`编号
我知道,这是个愚蠢的问题,但我还没有找到解决办法。列B是varchar(3)。这是一种方法,使用mysql操作符(): 支持有符号/无符号整数、小数和科学记数法 注意:建议避免在实体名称中使用sql关键字,即使您用反勾号引用它们。试试这个SQLFIDLE
从表1中选择*,其中列不是REGEXP'^[0-9]+$'
如果您想匹配实数而不是整数(
浮点数),则需要处理上述情况,以及模式介于0和1(即0.25)之间的情况,以及模式的小数部分为0的情况。(即2.0)。同时,我们将添加对整数前导零的支持(即005):
sql看起来像是从表1中选择*,其中列不是REGEXP“^0*[1-9][0-9]*(\[0-9]+)?”0+\[0-9]*[1-9][0-9]*$”
这同样适用于您
SELECT col FROM Table1
WHERE col NOT IN ( SELECT col FROM Table1
where CAST(col as DECIMAL(10,5)) !=0
or Col = '0' )
此regexp将捕获“000”,但不会捕获“3.141”或“1.23e-10”。谢谢michael。。现在我更新了我的答案,它也将捕获浮点。在编辑之前,已经支持前导零,但是stll缺少有符号的数字和科学符号。非常感谢您的帮助。最好的问候,PeterI不得不问。。。为什么要将数字存储在VARCHAR中?问题是。。选择不是数字的行。为什么选择数字。@radha使用非数字和小数编辑。感谢您的提示:)当输入字符串的数字后跟字符,如
1aa
或3--
时,此操作将失败。
^0*[1-9][0-9]*(\.[0-9]+)?|0+\.[0-9]*[1-9][0-9]*$
SELECT col FROM Table1
WHERE col NOT IN ( SELECT col FROM Table1
where CAST(col as DECIMAL(10,5)) !=0
or Col = '0' )