我有一个包含数字和其他字符串值的列(如"?","???"等)
是否可以在SQLite中的where子句中添加"is number"条件?就像是:
select * from mytable where isnumber(mycolumn)
Run Code Online (Sandbox Code Playgroud)
您也可以尝试这样的操作:
select * from mytable where printf("%d", field1) = field1;
Run Code Online (Sandbox Code Playgroud)
如果您的列是文本,并且包含数字和字符串,则这在提取整数数据时可能会有所帮助。
例:
CREATE TABLE mytable (field1 text);
insert into mytable values (1);
insert into mytable values ('a');
select * from mytable where printf("%d", field1) = field1;
field1
----------
1
Run Code Online (Sandbox Code Playgroud)
select * from mytable where abs(mycolumn) <> 0.0 or mycolumn = '0'
Run Code Online (Sandbox Code Playgroud)
http://sqlfiddle.com/#!5/f1081/2
基于这个答案
要测试该列是否只包含一个没有其他字母数字字符的整数,请使用:
NOT myColumn GLOB '*[^0-9]*' AND myColumn LIKE '_%'
Run Code Online (Sandbox Code Playgroud)
即,我们测试该列是否包含除数字以外的任何内容并反转结果。此外,我们测试它是否包含至少一个字符。
请注意,GLOB '*[0-9]*'还会发现嵌套在其他字符之间的数字。该函数typeof()将为'text'键入为 TEXT 的列返回,即使该文本表示一个数字。正如@rayzinnz 提到的,该abs()功能也不可靠。
| 归档时间: |
|
| 查看次数: |
10816 次 |
| 最近记录: |