Vb.net SQLITE仅从文本字段中选择数值

Vb.net SQLITE仅从文本字段中选择数值,vb.net,sqlite,select,Vb.net,Sqlite,Select,在VB.net中,我想运行一个sqlite select语句,只从包含数字和字母的文本字段(a4)中获取数值 My sqlite text a4字段数据包含如下数据: 28 days 1966 the 100 years war 我希望能够在 28 1966 100 sqlite a4字段具有文本数据类型 这就是我尝试过的 SELECT a4 from data where CAST(a4 AS INTEGER) GLOB '[0-9]' SELECT a4 FROM

在VB.net中,我想运行一个sqlite select语句,只从包含数字和字母的文本字段(a4)中获取数值

My sqlite text a4字段数据包含如下数据:

  28 days
  1966
  the 100 years war
我希望能够在

  28
  1966
  100
sqlite a4字段具有文本数据类型

这就是我尝试过的

SELECT a4 from data where CAST(a4 AS INTEGER) GLOB '[0-9]'
SELECT a4 FROM data WHERE a4 REGEXP '[0-9]'
我搜索了一个答案,但只找到了MS SQL答案,它使用的是SQLITE中不存在的ISNUMERIC


谢谢

不是在数据库中完成的,而是在客户端代码中完成的

Private子按钮2\u单击(发送者作为对象,e作为事件参数)处理按钮2。单击
Dim strings()作为字符串={“28天”、“1966年”、“100年战争”}
作为新列表的编号(字符串)
对于每一个字符串
Dim num As String=“”
对于每个c作为s中的字符
如果Char.IsNumber(c)那么
num&=c
如果结束
下一个
数字。添加(num)
下一个
对于数字中的每个num
Debug.Print(num)
下一个
'28
'1966
'100
端接头

您可以在SQL for SQLite3中执行此操作:

SELECT ROUND(a4) from data WHERE NOT ROUND(a4) = 0;
这是因为应用于ROUND()函数的非数值会导致值为0。例如:

sqlite> select round('hello');
round('hello')
--------------
0.0
..而存储为文本的数值变成了数字:

sqlite> select round('1234');
round('1234')
-------------
1234.0
注意:此解决方案有一个限制,即如果数值也是“0”或四舍五入到0.0,例如文本值“0.1”。如果文本以数字开头,但包含其他字符,例如


可能在关闭但无雪茄类别中:
trim(下部(信息),“abcdefghijklmnopqrstuvwxyz”)
。我想你也可以加入特殊角色。但是它不适用于
2加上2是4
的例子。谢谢Mary,如果我不能使用sql实现类似的功能,我可能不得不回到这个问题上来。
sqlite> select round('1234Hello');
round('1234Hello')
------------------
1234.0